在成员函数中创建对象
Create an object within a member function
在成员函数中创建对象萨瓦斯 ·第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
,
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- 如何获取在 main() 函数中构造的类的创建对象?
- C++递归地在类构造函数中创建对象
- 创建一个函数,该函数使用模板创建类或子类的对象
- 通过向构造函数其他对象引用页面来创建对象
- 创建用户定义的复制构造函数时无法创建对象
- C ++:如何在不创建对象的情况下在主函数中调用方法
- 在递归函数中更有效地创建对象和对象数组?C++
- 从类模板创建对象的工厂函数模板?
- 在创建对象向量时,不为每个对象唯一调用默认对象构造函数
- 如何在主函数之外创建对象?
- 如何发送通过绑定到函数/方法创建的函数对象?
- 内存用于在函数内创建对象?
- 通过显式调用对象的析构函数和构造函数来重新创建对象
- 如何防止构造函数在引发异常时创建对象
- 一般函数中类的概括为基类创建对象代码
- 在成员函数中创建对象
- 在类模板中创建模板函数对象
- 如何创建一个C ++函数,该函数在每次用户输入新数据时创建新对象