c ++在类之间传递指针 - 访问其他类方法

时间:2016-09-20 20:18:44

标签: c++

我有这个类实例

ControlPanel *cp = new ControlPanel();

另一个类需要访问cp中的方法,所以我

Monitor *cpmon = new Monitor(cp);

Monitor类标题看起来像

class Monitor {
public:
    Monitor(ControlPanel *_cp);
    ~Monitor();
private:
    ControlPanel *cp;
}

并且Monitor构造函数看起来像

#include "Monitor.h"

Monitor::Monitor(ControlPanel *_cp)
    {
    *cp = _cp; //doesn't work
    }

错误是:

  

'operator ='不匹配(操作数类型为'ControlPanel'和'ControlPanel *')

现在我打印了指针地址,我可以从构造函数中访问方法,例如,如果我执行_cp-> SomeMethod它可以工作,但我不知道如何编写私有* cp实际上是_cp指向的相同地址,以便我可以从Monitor的方法中访问最顶层的cp,而不仅仅是在其构造函数中 - 我读了很多 - 尝试了很多东西,得到了很多不同的错误,但我不能让它工作。有人可以澄清吗?我该如何分配私人* cp _cp的地址? 谢谢

2 个答案:

答案 0 :(得分:1)

问题是您取消引用指针并将其指定给指针。要修复,只需从

更改即可
*cp = _cp;

cp = _cp;

答案 1 :(得分:0)

ControlPanel必须为您提供赋值运算符(内置赋值运算符可以进行按位复制,从而为您提供segfuault)或者您应该只使用指向ControlPanel的指针(而不是复制ControlPanel对象)。

这两种方法都有其优点和缺点。如果我可以访问控制面板的源代码,我会编写一个有效的赋值运算符(如果需要的话!必须小心地编写C ++中的特殊类函数,以避免以后出现意外和痛苦的麻烦。)