在成员函数中创建对象

Create an object within a member function

本文关键字:创建对象 函数 成员      更新时间:2023-10-16

在成员函数中创建对象萨瓦斯 ·第12讲·3小时前

大家好!

我有一个将结构指针作为参数的类。在类的成员函数中,我正在创建一个新结构,然后尝试调用其他成员函数,这也将结构指针作为参数。当我点击编译时,我收到一个编译器错误,告诉我:">不能在没有对象的情况下调用成员函数'void SearchArray::InsertToTree(Tree*&, int('(和'bool SearchArray::IsInTheTree(Tree*, int('(。结构不是类的一部分,但即使我让它成为类的一部分,我也会收到同样的错误。

这是函数:

edit, all the code:
struct Tree{
int item{0};
Tree* left;
Tree* right;
Tree(int val = 0){
    item = val;
    left = nullptr;
    right = nullptr;
  }
};
class SearchArray{
public:
void InsertToTree(Tree*& node, int val)
{
    if(node == nullptr)
    {
        node = new Tree(val);
        return;
    }
    else if(val < node->item)
    {
        InsertToTree(node->left, val);
    }
    else
    {
        InsertToTree(node->right, val);
    }
}
bool IsInTheTree(Tree* node, int val)
{
    if(node == nullptr)
    {
        return false;
    }
    else if(val == node->item) { return true; }
    else if(val < node->item)
    {
        return IsInTheTree(node->left, val);
    }
    else { return IsInTheTree(node->right, val);}
}

static bool Exists(int arr[], int size, int k)
{
    Tree* tree = new Tree;
    tree = nullptr;
     for(int i = 0; i < size; ++i)
     {
         InsertToTree(tree, arr[i]);
     }
     bool answer = IsInTheTree(tree,k);
     return answer;
     delete tree;
  }
};

我还没有创建对象吗?谢谢你的时间!

编辑:我在 Windows 10 下使用 eclipse,并带有 mingw。我还没有用VS测试过。

不能调用成员函数 'void SearchArray::InsertToTree(Tree*&, int(

这是在告诉你InsertToTree()class SearchArray的成员函数。 因此,您需要构造一个 SearchArray 实例才能调用该成员函数,如下所示:

SearchArray mySearchArray; // calls the default constructor, you may need to call a different constructor, i.e. one with arguments
...
for(int i = 0; i < size; ++i)
{
    mySearchArray.InsertToTree(tree, arr[i]);
}

同样,对于SearchArray::IsInTheTree