Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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++_Reference_Undefined - Fatal编程技术网

C++ 同一文件中未定义的引用

C++ 同一文件中未定义的引用,c++,reference,undefined,C++,Reference,Undefined,我得到一个类中一个私有方法的未定义引用。下面是一个简短的代码片段(但整个代码目前都在一个源文件中,而不是分为头文件和源文件) 但是该函数的定义不是就在它的正下方吗?您的destroy_树重载的作用域不在btree上。该实现缺少btree::并且是必需的,因为它不在类定义中: void btree::destroy_tree(node * leaf) { if(leaf!=NULL) { destroy_tree(leaf->left); destroy_

我得到一个类中一个私有方法的未定义引用。下面是一个简短的代码片段(但整个代码目前都在一个源文件中,而不是分为头文件和源文件)


但是该函数的定义不是就在它的正下方吗?

您的destroy_树重载的作用域不在btree上。该实现缺少btree::并且是必需的,因为它不在类定义中:

 void btree::destroy_tree(node * leaf)
 {
   if(leaf!=NULL)
   {
     destroy_tree(leaf->left);
     destroy_tree(leaf->right);
     delete leaf;
   }
}

您的destroy_树重载的作用域未限定为btree。该实现缺少btree::并且是必需的,因为它不在类定义中:

 void btree::destroy_tree(node * leaf)
 {
   if(leaf!=NULL)
   {
     destroy_tree(leaf->left);
     destroy_tree(leaf->right);
     delete leaf;
   }
}

我看到的主要问题是:

void destroy_tree(node *leaf)
应该是:

void btree::destroy_tree(node *leaf)
此外,也无法创建btree对象。你也许应该这样做:

class btree
{
public:
    btree();
    ~btree();

    void destroy_tree();

private:
    void destroy_tree(node *leaf);
    node *root;
};

我看到的主要问题是:

void destroy_tree(node *leaf)
应该是:

void btree::destroy_tree(node *leaf)
此外,也无法创建btree对象。你也许应该这样做:

class btree
{
public:
    btree();
    ~btree();

    void destroy_tree();

private:
    void destroy_tree(node *leaf);
    node *root;
};