我已经安装了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:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|11|error: expected type-specifier before 'A'|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|12|error: expected type-specifier before 'P'|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|23|error: expected type-specifier before 'P'|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|41|error: '::main' must return 'int'|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp||In function 'int main(int, char**)':|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|44|error: no matching function for call to 'P::P(F)'|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|44|note: candidates are:|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|31|note: P::P(int)|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|31|note: no known conversion for argument 1 from 'F' to 'int'|
C:UsersenhzflepDocumentscode 01-forumQuestionmain.cpp|26|note: P::P(const P&)|
C:UsersenhzflepDocumentscode 01-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) ===|