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类,但我得到了错误。
答案 0 :(得分:1)
你需要一个IEngine实例作为参数来访问它的成员变量......
答案 1 :(得分: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);
}
但您需要传递IEngine
作为参数:
IEngine* pEngine /*initialize it here*/;
ShellCode(0, NE_Bin(), pEngine);
或者您可以在方法中使用全局实例(如果有的话)。