【问题标题】:passing internal variables to a struct constructor C++将内部变量传递给结构构造函数 C++
【发布时间】:2012-01-12 22:19:44
【问题描述】:

我正在使用结构作为节点编写二叉搜索树。我需要使用结构构造函数初始化结构中的变量。

我有以下代码可以正常工作:

struct TreeNode{
    char name[20];
    int bribe;
    TreeNode* left;
    TreeNode* right;

    TreeNode()
    {
        bribe = '\0';
        left = NULL;
        right = NULL;
        for (int i = 0; i < 20; i ++){
        name[i]= '\0';
    }
 }

我需要使用带有参数的构造函数进行初始化--> TreeNode(char* name, int bribe, TreeNode* left, TreeNode* right) 我尝试了以下与我看到的示例类似的方法,但出现了一些错误:

struct TreeNode{

    char name[20];
    int bribe;
    TreeNode* left;
    TreeNode* right;

    TreeNode(char* name, int bribe, TreeNode* left, TreeNode* right);   
};


TreeNode::TreeNode(char* name, int bribe, TreeNode* left, TreeNode* right){ //***check this
    bribe = '\0';
    left = NULL;
    right = NULL;
    for (int i = 0; i < 20; i ++){
        name[i]= '\0';
    }
}

所以我的问题是关于将参数传递给初始化结构变量的结构的构造函数。我似乎无法弄清楚这是否发生在结构内部或外部,或者正确的语法是什么。我正在尝试完成第一个代码段所做的事情,但通过将参数传递给构造函数来完成。任何帮助将不胜感激。

编辑: 以下是我得到的错误:

【问题讨论】:

  • 请告诉我们错误是什么,是什么代码导致的。这将有助于我们帮助您。
  • 连同下面关于成员初始化列表的答案,听说过“this”关键字吗?
  • 我附上了上面的错误,我用“this”关键字尝试了同样的实现,仍然得到同样的错误。

标签: c++ constructor struct


【解决方案1】:

您应该在 C++ 中使用 Member Initializer List 来初始化您的类成员。

【讨论】:

  • 嘿,关于“初始化列表”是否是正确术语的辩论,太愚蠢了。但不是在它发生时......无论如何,为链接+1。
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 2015-02-12
  • 2020-01-16
  • 2016-04-20
  • 2011-09-05
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
相关资源
最近更新 更多