C++ 为什么我不能拿自己定义的新类A的对象作为另外一个类B的一个成员变量?

RT两边的头文件我都有加上但编译器还是提示说不能识别我自己定义的那个新类A请问这是为什么另外有一种解决方法就是把这个成员变量定义为指针然后在B类的声明之前加上classA... RT 两边的头文件我都有加上 但编译器还是提示说不能识别我自己定义的那个新类A 请问这是为什么

另外 有一种解决方法 就是把这个成员变量定义为指针 然后在B类的声明之前加上 class A ;
这样的话就能编译通过 运行起来好像也可以 请问这又是为什么
展开
 我来答
清影星河6A
2009-04-13 · TA获得超过851个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:912万
展开全部
这就是
定义依赖 与
实现依赖
的区别
直接将A对象作为B的成员变量,B是定义依赖于A的,因为 sizeof(B) 取决于 sizeof(A)
用指针就不同了,sizeof(A*)就是=4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syzh120
2009-04-13 · 超过47用户采纳过TA的回答
知道答主
回答量:193
采纳率:0%
帮助的人:170万
展开全部
我感觉还是两边的头文件都加上出的问题
比如B要用A的 你就在B的CPP文件加上A的头文件就可以了 不要俩头加
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
confuciuskg
2009-04-13 · TA获得超过1285个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:281万
展开全部
完全可以啊,见示例,不明白的地方hi我

#include<iostream>
using namespace std;
class A
{
public:
A():m1(0),m2(0){}
~A(){}
void display(void){cout << "m1 = " << m1 <<"\nm2 = " << m2 <<endl;}
int m1;
int m2;
};
class B
{
public:
B():m(3){}
~B(){}
void display(void){
cout << "Class A member a In Class B: \n";
a.display();
cout << "Integer member m In Class B: \n" << " m = " << m << endl;
}
A a; // Class A类型成员
int m;
};

void main()
{
B b;
b.display();
}

运行输出:
Class A member a In Class B:
m1 = 0
m2 = 0
Integer member m In Class B:
m = 3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vbtraz
2009-04-13 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4519万
展开全部
头文件怎么加的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
abawster
2009-04-13 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:0
展开全部
为什么不能,,,定义或者包含有问题吧,,贴代码?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式