C++简单问题。我有个类A,里面有个成员函数。还有一个类B。如何用A中的成员函数来创建三个B的实例?

比如说我想这样实现,但是不行。。。。求助!!!!#include<iostream>usingnamespacestd;classA{private:inti;publi... 比如说我想这样实现,但是不行。。。。求助!!!!

#include<iostream>
using namespace std;

class A
{
private:
int i;
public:
void show()
{
cout<<i;
}

};

class B
{
public:
void create()
{
static A a;
}
};

void main()
{
B b;
b.create();
a.show();

}
展开
 我来答
拉里杨
2012-11-20
知道答主
回答量:9
采纳率:0%
帮助的人:10.7万
展开全部
编译器在你的main函数里面发现可一个"a",但是它不知道这个"a"是什么,所以给你报错说"undeclared identifier",这是当然的,因为你根本没有定义"a"。
那么你可能会说你在void B::create()的实现中写了一个"a",不仅写了,你还申明它是A类的静态对象,不过这与你在main函数里面写的那个"a"毫无关系。
你的问题可能是:先用B类的一个对象调用B类的成员函数,这个函数中有一个A类的静态对象,然后在外部调用这个对象,这在逻辑上很诡异。
不过你若真想这么做,那么可以如此:
将B类的void create(void)函数改为:
A* create(void)
{
static A a;
return &A;
}
然后修改main函数中改为:
void main()
{
B b;
A* p=b.create();
p->show();
}
贾佳甜
2012-11-20
知道答主
回答量:27
采纳率:0%
帮助的人:27.9万
展开全部
void main()
{
B b;
b.create();
A a;
a.show();
}
不知道是不是这个意思
追问
不是。。。我不在主函数创建a实例,而是在b的成员函数中创建a。所以主函数里面没有"A a"
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3fb04b5
2012-11-20 · 超过12用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:38.8万
展开全部
在A类中申明B为友员类。
friend class B;
追问
加了。。但是还是老问题啊。。。。
E:\文件\c++\tas.cpp(30) : error C2065: 'a' : undeclared identifier
E:\文件\c++\tas.cpp(30) : error C2228: left of '.show' must have class/struct/union type
Error executing cl.exe.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式