C++类与对象的问题,如何在test类中调用类A中定义的类B的对象

初学C++,关于类与对象总觉得还没弄很清楚,希望可以得到大家点拨,非常感谢!
具体问题如下:
class B
class A
{
public: B b;//在类A中建了一个类B的对象b
fun();//类A的函数fun()中对类B的对象b进行了一些操作
};
现在我想建一个测试类class Test去测试fun()中对类B的对象b的操作是否成功,因此需要调用类B的对象b,请问应该如何操作呢?
我试着在类Test中用 A::b去操作,但是编译后提示错误:object missing in reference to "A::b"
请教大家我的误区到底在哪里呢?

你这里的b不是A的成员变量,因为你用的是public,你要用private才行。而且,把b变为A的成员变量后,最好使用get方法去访问b,也就是写个getB()的方法去返回b。追问

如果是普通的成员变量当然可以用get()去做,但是现在这个b是另一个类的对象啊,怎样用get返回呢?

追答

如果是外面的对象而又要实用,那么你先要将这个对象实例化才行。也即是B b=new B()

追问

我已经在类A中将b实例化了呀

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-20
怎么能这样访问呢 A::b
b是作为A中的成员变量。
只能A.b.x访问呢
还有A中的变量 访问权限要设置
第2个回答  2011-04-20
不懂 有点深奥

C++两个类之间的成员函数怎么相互调用,怎么老是报错。
1) 将需要调用的成员函数设为static 类型,如:在前述例子2中,将class Test2 成员函数Compare 定义前加上static 如下(黑体为改变之处):class Test2{\/\/….int static __cdecl Compare(const void* elem1, const void* elem2) \/\/成员函数。\/\/其他不变} 改变后的代码编译顺利通过。原因是,stati...

c++问题,一个cpp文件如何调用另一个cpp文件已经定义的类?我不想重复...
如果是自定义的cpp,那么要包含同名的.h文件,想要调用cpp中的类时,只要在主cpp的开始添加include "xxx.h"即可调用,不想重复定义的话这样定义#pragma once

C++工程中,如何引用另一个文件中的类?
先包含A类的头文件,注意路径。然后就可以引用了。还需要把a类的h和cpp文件加入工程,才能顺利build。

C++中类的对象可以访问类的私有数据成员吗?
类的对象是不能访问类的私有数据成员的,只有通过类的成员函数才可以访问类的私有数据。

一个cpp文件如何调用另一个cpp文件已经定义的类?
1. a = new A,即可用a去访问A中提供的接口 2. A *a = new A;同样达到目的 当然一般的做法是将类的声明放在.h文件里,定义放在.cpp文件,然后可以直接在B类中保存一个A类的指针,那样即可实现使用A类了。C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做...

若Test类已经定义了对象aa 要通过调用拷贝构造函数复制一个新对象bb...
Test * aa = new Test ;Test * bb = NULL;bb = new Test (aa);然后自己写 一个Test的构造函数吧 c++一定要用指针来做 子类调用父类的拷贝函数 会分配不到足够的空间 --- Test bb=aa; 很危险~ 切断啊

C++的一个问题。。。函数返回值是一个类,然后为什么类的对象却不能接 ...
提示说没有匹配的函数调用,你把f函数的形参类型改成Test&试试……因为没有看到类里的构造函数是怎么定义的,所以就不准。

c++程序。用类和对象计算a-b的值。帮我修改一下程序。
int a,b;public:void Init(int c,int d);void printx();private:int x;};void Text::Init(int a,int b){x=a-b;} void Text::printx(){ cout<<a<<"-"<<b<<"="<<x<<endl;} int main(){ int a,b;Text x;while(cin>>a>>b){ x.Init(a,b);x.printx();} retu...

在C++中如何建立一个全局的类的实例?
定义一个类,再申明这个类的全局变量,就是一个全局实例。给你举例如下:定义一个cTest类 Class cTest { public:……protected:……};然后在申明全局变量的地方,也就是各函数的外面,申明一个cTest的变量:cTest myTest;myTest就是个全局的实例 你提到的aClass *oneClass;oneClass是一个指针,与...

C++定义类的时候什么时候用内嵌函数
{ Object.Test();\/\/ Object 是包含Test函数的类的对象} 那么经过编译器处理后,可能会变成下面的样子(伪代码)。 void InlineTest(){\/\/ Object.Test();\/\/ 这个就没有了,将使用函数的函数体来代替函数调用cout << "Inline function test"<< endl;cout << "Test done..."<< endl;} ...

相似回答