C++ 未初始化的局部变量';a';VS2012在模板类的对象上使用
在VS2012中,下面的代码没有编译,它说C++ 未初始化的局部变量';a';VS2012在模板类的对象上使用,c++,visual-studio-2012,C++,Visual Studio 2012,在VS2012中,下面的代码没有编译,它说 错误C4700:在ab(a)行上使用了未初始化的局部变量“a” 我在gcc4.4.7中测试过,没问题 我原以为编译器无法生成默认构造函数,但这似乎只是VS2012的一个问题。为什么它会给出这个错误,解释编译器是如何处理代码的 template<typename T> class A { public: T* p; }; int main() { A<int> a; A<int> b(a);
错误C4700:在ab(a)行上使用了未初始化的局部变量“a”代码>
我在gcc4.4.7中测试过,没问题
我原以为编译器无法生成默认构造函数,但这似乎只是VS2012的一个问题。为什么它会给出这个错误,解释编译器是如何处理代码的
template<typename T>
class A
{
public:
T* p;
};
int main()
{
A<int> a;
A<int> b(a);
}
模板
甲级
{
公众:
T*p;
};
int main()
{
A A;
A b(A);
}
我在gcc4.4.7中测试过,没问题
在什么意义上你认为它是好的?您从未设置a.p值以便代码可以编译,但即使使用gcc,它仍然是垃圾数据
默认情况下,它是一个警告,而不是一个错误,因此您可以使用gcc可能编译它的相同方式来编译它。您只需将/WX
设置为将警告视为错误,这是一种良好的做法。a.p
未初始化。原始指针的默认构造函数是不初始化它。