繁体   English   中英

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

[英]Is this (crash) a bug in VS2012 c++ compiler

我在c ++,Visual Studio 2012(专业版,更新4)中编译以下代码

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

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

现在,我知道私有析构函数将仅强制堆分配的对象,但是我希望为此而产生编译错误。 相反,我得到一个标题为“ Microsoft(R)C / C ++优化编译器”的窗口,说

Microsoft(R)C / C ++优化编译器已停止工作。 Windows可以在线检查问题的解决方案

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

编辑

我要发布的代码是win32控制台程序中存在的所有代码(即使main()都具有此无参数形式),并且唯一包含的标头是sstream

如果将析构函数移到类的公共部分,我们将不再崩溃,但是如上所述,这应该是导致编译错误的原因(即无法访问dum中声明的私有成员 ),而不是此弹出窗口。 该问题针对的人员可以在此处提供有关编译器问题的内在信息或内在信息 ,这之前我已经看到过类似的问题,但这是引起此类问题的最小代码段。

尝试编译固定版本:

#include <sstream>

using namespace std;

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

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

给我以下编译错误。 VS2012 Ultimate版本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上没有崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM