使用下面的例子,我想从我的'Bottom'对象中调用printTop()函数。似乎我可以使用指向父对象的指针?
class Bottom {
public:
void printBottom(){std::cout << "print bottom";};
};
class Top {
public:
void printTop(){std::cout << "print top";};
private:
Bottom bottom;
};
感谢。
答案 0 :(得分:1)
首先,由于代码中的错误,您的代码将无法执行,无法解决。
其次,您无法从printTop()
对象调用函数Bottom
,因为您无法从printTop()
类访问Bottom
。
你可以用这种方式重写代码:
class Top {
public:
void printTop(){ std::cout << "print top"; }
};
class Bottom {
public:
void printBottom(){ std::cout << "print bottom"; }
Top top;
};
int main()
{
Bottom B;
B.top.printTop();
return 0;
}
答案 1 :(得分:1)
如果这真的是你的心所在,那就可以做到(并不意味着我提倡它):
class Top;
class Bottom {
public:
Bottom( const Top& topLevelObj ) : _topLevelObj(topLevelObj) { }
void printBottom() const {std::cout << "print bottom";};
void printTop() const;
private:
const Top& _topLevelObj;
};
class Top {
public:
Top() : _bottom(*this) {}
void printTop() const {std::cout << "print top";};
private:
Bottom _bottom;
};
void Bottom::printTop() const { _topLevelObj.printTop(); }