-2
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 类,但出现错误。

4

2 回答 2

1

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

于 2012-09-21T15:23:23.120 回答
1

IEngine作为ShellCode朋友。这意味着您可以访问对象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);
}

但您需要传递IEngineas 参数:

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

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

于 2012-09-21T15:28:20.677 回答