【发布时间】:2013-06-30 05:04:13
【问题描述】:
#include <iostream>
using namespace std;
class B {
private:
class A;
friend void f ( A Aobj );
B ( int i ) {}
};
class A{
};
void f ( A Aobj ) {
B Bobj ( 1 );
}
int main() {
}
g++ 产生以下错误:
$ g++ a.cpp
a.cpp: In function ‘void f(A)’:
a.cpp:10: error: ‘B::B(int)’ is private
a.cpp:18: error: within this context
如果进行以下任何更改,错误就会消失: 1.从B的构造函数中去掉“int i”。 2. 将 f 的数据类型从 A 更改为其他任何类型:例如 void f ( int Aobj )。 3、在B之前定义A类,去掉A的前向声明。
【问题讨论】:
标签: c++ constructor g++ private friend