首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++编程思想1卷2版135页解决办法

2012-02-09 
c++编程思想1卷2版135页struct Xstruct Y{void f(X*)}struct X{private:int ipublic:void initialize(

c++编程思想1卷2版135页
struct X;

struct Y
{
  void f(X*);
   
};
struct X
{
private:
  int i;
public:
  void initialize();
  friend void Y::f(X*);
};

书上说要传址,我试了下传值也能运行呀,
“如果试图传递整个对象,编译器必须知道X的全部定义以确定它的大小以及如何传递使得无法声明一个类似Y::g(X)的函数” 这句什么意思,我声明了也能运行呀

[解决办法]

探讨
明明不用指针也可以的~~

struct X;

struct Y
{
void f(X);
};
struct X
{
private:
int i;
public:
void initialize();
friend void Y::f(X);
};

楼上的,你这样能编译是因为声明和定义放在同一个文件里了,你将他们分开看看?
void Y::f(X x)
{
x.i = 1;
}
int main()
{
X x;
Y y;
y.f(x);
}

热点排行