C ++类的基本错误

时间:2012-09-21 15:18:25

标签: c++

class IEngine: public ICoreObject 
{
private:
    Network     *_Network;
    bool        _Process;

public:
    IEngine();
    ~IEngine();
    void Initial(...);
    void StartServer(unsigned short port);
    bool Process();
    void StopProcess();
    void StartProcess();
    friend void ShellCode(int id,struct NE_Bin var);

};

为什么我不能使用ShellCode中的_Network?

这是ShellCode函数的定义

void ShellCode(int id,struct NE_Bin var) //функция-друг
{
    std::cout<<"ShellFunc Delegated"<<std::endl;
    var.data = (void *)"T";
    var.length = 1;
    //_Network->SendMessageW(id, var);
}

我试图进入_Network类,但我得到了错误。

2 个答案:

答案 0 :(得分:1)

你需要一个IEngine实例作为参数来访问它的成员变量......

答案 1 :(得分:1)

IEngineShellCode为朋友。这意味着您可以访问private对象的IEngine **成员。 _Network只是您上下文中的变量,不受任何限制。

这样的事情会起作用:

void ShellCode(int id,struct NE_Bin var, IEngine* pEngine)
{
    std::cout<<"ShellFunc Delegated"<<std::endl;
    var.data = (void *)"T";
    var.length = 1;
    pEngine->_Network->SendMessageW(id, var);
}

但您需要传递IEngine作为参数:

IEngine* pEngine /*initialize it here*/;
ShellCode(0, NE_Bin(), pEngine);

或者您可以在方法中使用全局实例(如果有的话)。