2012-11-07 61 views
1

我正在學習C++的繼承,我試圖訪問一個容器類的方法。C++訪問容器類的方法

我有一個環境類有一個公共方法稱爲drawText()

環境類有一個機器人類機器人裏面:

robot = new Robot; 

我怎麼能說的drawText()機器人類裏面?

預先感謝您!

+8

如果你正在使用C中的'new'隨便++,它可能是錯誤的。 C++與Java不同。 –

+0

感謝您的注意。我應該去機器人機器人嗎?然後? –

+1

是的,這是最好的方法 –

回答

3

可以在Robot.h環境參考

//robot.h  
namespace envrNamespace  
{  
    class Environment; 
}; 

namespace rbtNamespace 
{ 
class Robot 
{ 
    Environment* _parent; 
    void setParent(Environment* _env) {_parent = _env;}; 
    Environment* getParent() {return _parent;}; 
    //... 
}  
}; 

//Environment.cpp 
Robot* robot = new Robot(); 
robot->setParent(this); 
2

添加這是你所需要的:

class Environment { 
public: 
    Environment() { } 
    ~Environment() { } 

    setRobot(Robot* robot) { 
    robot_ = robot; 
    } 
    drawTest() { } 

private: 
    Robot* robot_; 
}; 

class Robot { 
public: 
    Robot(Environment* env) { 
    env_ = env; 
    } 

    void foo() { 
    env_.drawTest(); 
    } 

private: 
    Environment* env_; 
};