这个C++小程序片断哪里出现错误了

来源:百度知道 编辑:UC知道 时间:2024/07/03 04:04:53
这个C++小程序片断哪里出现错误了

#include<iostream>
using namespace std;
class A
{
public:
A(int x){a=x}
private:
int a;
}
class B
{
public:
B (int x=0){a.a=x;}
B (const B&x){a.a=x.a;}
private:
A a;
};

#include<iostream>
using namespace std;
class A
{
public:
A(int x){a=x} //a=x之后少分号
private:
int a;
} //这里少分号
class B
{
public:
B (int x=0){a.a=x;}
B (const B&x){a.a=x.a;} //应该是x.a.a
private:
A a;
};

==========
除了格式再说说其它错误.
a只有一个带参数的构造函数,所以类B在初始化时只能在类B的初始化列表里初始化成员a.
另外类A的成员a是private,所以B不能访问,即使A是B的成员.要想类B可以访问类A的私有成员,只能加类B为类A的友元.

改写如下:
#include<iostream>

class B;

class A
{
friend class B;
public:
A(int x){a=x;}
public:
int a;
};

class B
{
public:
B (int x=0) : a(0){a.a = x;}
B (const B &x) : a(0){a.a=x.a.a;}
private:
A a;
};

int main()
{
return 0;
}

#include<iostream.h>
#include<stdio.h>
++头文件!

#include<iostream>
using namespace std;
class A