VS2012用于模板类对象的未初始化的局部变量'a'

时间:2015-04-25 07:48:50

标签: c++ visual-studio-2012

在VS2012中,以下代码无法编译,它说 行error C4700: uninitialized local variable 'a' used上的A<int> b(a); 我在gcc4.4.7中测试过它,没关系。

我曾想过会阻止编译器生成默认构造函数,但这似乎只是VS2012的一个问题。为什么它会给出这个错误,关于编译器如何处理代码的任何解释?

template<typename T>
class A
{
public:
    T* p;
};

int main()
{
    A<int> a;
    A<int> b(a);
}

1 个答案:

答案 0 :(得分:0)

  

我在gcc4.4.7中测试过它,没关系。

你认为它在哪种方面很好?你永远不会设置值a.p所以代码可以编译,但即使使用gcc它仍然是垃圾数据。

默认情况下,C4700是一个警告,而不是一个错误,因此您可以使用gcc编译它的相同方式进行编译。您只需将/WX设置为将警告视为错误,这是一种良好做法。