【发布时间】:2023-01-19 14:30:51
【问题描述】:
出于某些原因,我希望 A 类的多个实例都可以访问 B 类的单个实例。B 具有公共成员函数,允许 A 的对象从 B 获取数据,但不能更改它。我试图通过在我的主函数中声明一个 B 的对象,然后在我声明 A 类型的对象时将它传递给构造函数来做到这一点。
void main () {
B obj_b;
A A1(obj_b);
A A2(obj_b);
A A3(obj_b);
cout << A1.getfoo() << endl;
cout << A2.getfoo() << endl;
count << A3.getfoo() << endl;
}
class B{
private:
int foo = 9;
public:
int getfoo(){return foo;}
};
class A {
private:
B *bptr;
public:
A(B b){ this->bptr = &b; }
int getfoo(){ return bptr->getfoo(); }
};
这编译并运行,但我得到非常奇怪的结果。 getfoo 的返回值有时正确有时不正确。我是否错误地处理了指针?有一个更好的方法吗?
【问题讨论】:
标签: c++ function class object pointers