gpt4 book ai didi

c++ - 这是(崩溃)VS2012 c++ 编译器中的错误吗

转载 作者:行者123 更新时间:2023-11-30 04:07:10 25 4
gpt4 key购买 nike

我正在使用 C++、Visual Studio 2012(专业版、更新 4)编译以下代码

class dum {
stringstream *ss;
~dum() {
delete ss;
}
public:
dum() : ss(NULL) {}
};

int main()
{
dum a;
return 0;
}

现在我知道私有(private)析构函数只会强制堆分配对象,但我预计会出现编译错误。相反,我得到一个标题为“Microsoft (R) C/C++ Optimizing compiler”的窗口说

Microsoft (R) C/C++ Optimizing compiler has stopped working. Windows can check online for a solution to the problem

然后通常提示上线但没有任何反应(或得到解决)。我是做错了什么还是偶然发现了编译器中的错误?

编辑

我发布的代码是 win32 控制台程序中的所有代码(甚至 main() 也没有参数形式)并且唯一包含的 header 是 sstream

如果将析构函数移至类的公共(public)部分,我们将不再发生崩溃,但正如我上面提到的,这应该是编译错误的原因(即 无法访问在 dum 中声明的私有(private)成员) 而不是这个弹出窗口。 这个问题针对的是那些可以提供一两个关于这里编译器问题的内在问题的人,我以前见过类似的问题,但这是导致这种事情的最小代码段。 p>

最佳答案

尝试编译固定版本:

#include <sstream>

using namespace std;

class dum {
stringstream *ss;
~dum() {
delete ss;
}
public:
dum() : ss(NULL) {}
};

int main()
{
dum a;
return 0;
}

为我提供以下编译错误。使用 VS2012 Ultimate Version 11.061030.00 Update4 进行了尝试。

1>------ Build started: Project: dum, Configuration: Debug Win32 ------
1> dum.cpp
1>c:\users\randmaniac\documents\visual studio 2012\projects\dum\dum\dum.cpp(19): error C2248: 'dum::~dum' : cannot access private member declared in class 'dum'
1> c:\users\randmaniac\documents\visual studio 2012\projects\dum\dum\dum.cpp(8) : see declaration of 'dum::~dum'
1> c:\users\randmaniac\documents\visual studio 2012\projects\dum\dum\dum.cpp(6) : see declaration of 'dum'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我最近安装的 VS2012 没有崩溃。

关于c++ - 这是(崩溃)VS2012 c++ 编译器中的错误吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589620/

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