Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;类的基本错误_C++ - Fatal编程技术网

C++ C++;类的基本错误

C++ C++;类的基本错误,c++,C++,为什么我不能使用外壳代码中的网络 这是外壳代码函数的定义 class IEngine: public ICoreObject { private: Network *_Network; bool _Process; public: IEngine(); ~IEngine(); void Initial(...); void StartServer(unsigned short port); bool Process

为什么我不能使用外壳代码中的网络

这是外壳代码函数的定义

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);

};
void外壳代码(int-id,struct-NE_-Bin-var)//
{

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

IEngine
作为朋友拥有
shell代码。这意味着你可以访问
private
**一个
IEngine
对象的成员。
\u-Network
只是你上下文中的一个变量,不受任何约束

类似这样的方法会奏效:

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);
}

或者,您可以在方法内部使用全局实例(如果有)。

您可以发布
ShellCode()的定义吗?因为原因……你如何尝试使用它?我们是否应该猜测编译器正在报告什么错误?假设我们首先讨论编译错误,而不是链接器或运行时错误。我没有编译问题,我就是无法到达这个实例。@ LucChanGigig:我不考虑全局变量G。ood实践,所以我没有提到。无论哪种方式,他都需要访问IEngine实例。@Borgeader,这是不同的。删除了dv。我同意这不是好的实践,但说“除非你这样做,否则这是不可能的”,实际上是错误的。@user1174133\u网络指针以NULL开头。您需要在它包含任何内容之前将其分配给某个对象。我建议您添加一个setter或向构造函数添加一个参数。内存中的\u网络地址没有问题。有一个问题我无法访问IEEngine::\u网络。@user1174133您已将其声明为友元。如果静态友元方法可以在不引用实例的情况下访问实例,您认为它如何获取该实例?您仍然必须将IEngine实例传递给该方法,然后才能使用其私有成员。
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* pEngine /*initialize it here*/;
ShellCode(0, NE_Bin(), pEngine);