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.

C++中两个文件中各有一个类,怎么调用另一个类中的成员
1、class A::B 也就是说将B定义为A的父类, 这样你就可以自然的在A里面用f(x)了 2、class A { B B_ins;int g(x);} int g(x){ return B_ins.f(x)} 也就是说你可以在A里面使用一个B的对象作为成员变量,这样就可以用他的函数了 ...

C++类中的类成员变量怎么调用带参数的构造函数来初始化?
A(int a){ax = a;};int ax;};class B { public:\/***\/ B(int b) : bx(b) \/\/这样调用 { } B() : bx(0) \/\/这样也行 { } \/***\/ void print(){ printf("%d", bx.ax);} \/***\/ A bx; \/\/这样声明 \/***\/ };int main(int argc, char* argv[]){ \/*...

C++中如何用类来直接调用类中的成员函数
static void ABC(){ } } 这样可以在主函数里直接用 A::ABC();这样的语句进行调用。

C++中如果要用的类定义在使用之后,该怎样声明?
B(1,a);return 0;}

C++类的成员函数可以调用其他类的成员函数吗
其他类希望外部调用的会设计成public,于是你可以很容易地通过指针或者对象名或者引用去调用其它类的public函数 还有其他的情况:static函数,这个可以全局调用,所以你自然也可以调用。友元关系,如果你的这个类与需要调用的其他类是友元的关系,那么你可以打破public的限制调用其它类的成员函数 ...

C++如何在A类中定义一个指针指向B类的一个成员函数
1、直接定义即可。比如已有一个类class A, 再定义一个类class B,这样在B的定义中,就可以有一个A*类型的成员变量。比如 class B { A * a;};这里的B::a就是一个A*类型的指针。2、需要注意的是,要使用这种形式的定义,要么A的定义在B的上方,要么在B定义前加一个A类的声明。如 class A...

C++如何在一个类的成员函数中调用另一个类的成员函数
1、首先声明如下所示的类,类内部定义一个public的整型数据成员。2、主函数中定义指向类的数据成员的指针。3、声明类的对象,该对象变量调用指向类的数据成员的指针进行赋值操作。4、然后输出打印类的数据成员,从结果看,上一步的操作赋值成功。5、定义类的指针,通过指针指向对象成员的指针来进行赋值。...

C++如何在A类中定义一个指针指向B类的一个成员函数?
比如已有一个类class A, 再定义一个类class B,这样在B的定义中,就可以有一个A*类型的成员变量。示例代码一:class A{private: int a;public: int c;public: A(int i) { a = i; }; int Fun(int b) { return ((a * c) + b); };};示例代码二...

c++中一个程序含有多个类该如何实现
namespace)来管理,如果两个类或多个类的类名相同,必须放在不同的命名空间中,以示区别 示例 namespace 空间的名字 { public class 类名1 { \/\/类的定义内容 } public class 类名2 { \/\/类的定义内容 } \/\/下面可再定义类 } \/\/下面可再定义空间,也可以定义全局成员(如main函数等)...

C++中定义的类,成员函数可以直接使用吗?
没有对象的时候要访问类成员函数的话,只能访问静态成员函数。例如:class A { static void ABC(){ } } 这样可以在主函数里直接用 A::ABC();这样的语句进行调用。

相似回答