C++具有显式强制转换的代码,导致Visual Studio编译器崩溃



我已经安装了Visual Studio 2013来尝试一些C++代码来测试将自己变异为其他类之类的类的想法(这很愚蠢,但这个想法是在梦中产生的),它正在崩溃Visual Studio的编译器,不知道为什么。

只需编译它,标题为"Microsft C++ Optimizer deixou de funcionar"的崩溃消息(停止在我的语言中运行)

法典:

class F
{
    public:
        int f;
        F(int f){   this->f = f; }
        operator A(){   return A(f); }
        operator P(){   return P(f); }
};
class A
{
    public:
        int a;
        A(int a){   this->a = a; }
        operator F(){   return F(a); }
        operator P(){   return P(a); }
};
class P
{
    public:
        int p;
        P(int p){   this->p = p; }
        operator F(){   return F(p); }
        operator A(){   return A(p); }
};
void stuff(F f)
{
    printf("Val -> %dn", f.f);
}
void main(int argc, char* argv[])
{
    P p(3);
    stuff((F)(A)(P)(F)(A)(P)(F)(A)p);
}

尝试使用 gcc 构建它。没有崩溃,只是没有建筑物..这永远行不通。现在甚至懒得去解开你试图完成的事情都太晚了。以下是错误消息:

||=== 001-forumQuestion, Release ===|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|11|error: expected type-specifier before 'A'|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|12|error: expected type-specifier before 'P'|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|23|error: expected type-specifier before 'P'|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|41|error: '::main' must return 'int'|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp||In function 'int main(int, char**)':|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|44|error: no matching function for call to 'P::P(F)'|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|44|note: candidates are:|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|31|note: P::P(int)|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|31|note:   no known conversion for argument 1 from 'F' to 'int'|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|26|note: P::P(const P&)|
C:UsersenhzflepDocumentscode01-forumQuestionmain.cpp|26|note:   no known conversion for argument 1 from 'F' to 'const P&'|
||=== Build finished: 5 errors, 0 warnings (0 minutes, 0 seconds) ===|

最新更新