我在visual studio 2008中成功构建了类似于以下代码的东西:
class OpDevconfigSession;
class DevconfigSession
{
...
private
friend class OpDevconfigSession;
};
Run Code Online (Sandbox Code Playgroud)
再次,这与视觉工作室相得益彰.但是,如果我尝试在g ++版本4.3.2下编译代码,我会收到一条错误消息,例如:
error: friend declaration does not name a class or function
Run Code Online (Sandbox Code Playgroud)
我知道标准一致性不是微软的强项,所以我想知道我写的代码是否以某种我尚不理解的方式打破了标准.有人有想法吗?
谢谢
您的代码段后面缺少冒号private.在修复之后,它以G ++(http://codepad.org/XJuyEq9z)的方式运行For Me™.
它也是标准的 - 你甚至不需要单独的前向声明.请参阅标准11.4中的此示例:
class X {
enum { a=100 };
friend class Y;
};
class Y {
int v[X::a]; // OK, Y is a friend of X
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |