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

比如说我想这样实现,但是不行。。。。求助!!!!

#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();

}

编译器在你的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();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-20
void main()
{
B b;
b.create();
A a;
a.show();
}
不知道是不是这个意思追问

不是。。。我不在主函数创建a实例,而是在b的成员函数中创建a。所以主函数里面没有"A a"

本回答被网友采纳
第2个回答  2012-11-20
在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.

相似回答