如何调用父对象中的函数? (C ++)

时间:2017-11-11 15:21:06

标签: c++

使用下面的例子,我想从我的'Bottom'对象中调用printTop()函数。似乎我可以使用指向父对象的指针?

class Bottom {
public:
    void printBottom(){std::cout << "print bottom";};
};

class Top {
public:
    void printTop(){std::cout << "print top";};
private:
    Bottom bottom;
};

感谢。

2 个答案:

答案 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(); }