gpt4 book ai didi

c++ - VS2012 在模板类对象上使用的未初始化局部变量 'a'

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:03 25 4
gpt4 key购买 nike

在 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);
}

最佳答案

I tested it in gcc4.4.7, it's fine.

从什么意义上说,你认为它很好?您永远不会设置值 a.p,因此代码可能会编译,但即使使用 gcc,它仍然是垃圾数据。

默认情况下,C4700是一个警告,而不是一个错误,所以你可以用 gcc 可能编译它的相同的破坏方式来编译它。您只需将 /WX 设置为将警告视为错误,这是一个很好的做法。

关于c++ - VS2012 在模板类对象上使用的未初始化局部变量 'a',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29862503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com