class test
{
private:
class privateStruct
{
public:
int m;
privateStruct(int p){m=p;}
};
};
void ff()
{
test::privateStruct ps(4);
throw ps; //Does not work..
}
void main()
{
try
{
ff();
}
catch(...)
{
}
}
但是以下代码有效
class test
{
private:
class privateStruct
{
public:
int m;
privateStruct(int p){m=p;}
};
};
void ff()
{
throw test::privateStruct(4); //Work why
}
void main()
{
try
{
ff();
}
catch(...)
{
}
}
注意:我正在使用VC ++ 6。
我需要回答为什么上面的代码有效。
提前致谢 :)
最佳答案
这是Visual Studio 6.0的一个旧/已知错误。构造临时对象时,它将忽略访问说明符。没有修复程序。
将警告级别提高到3或更高(/ W3)会导致违规代码发出警告。