错误:在')'令牌节点()

时间:2016-11-14 03:33:55

标签: c++ compiler-errors

所以,我不断收到一个错误,说我需要一个不合格的ID,并且无法弄清楚是什么给了我错误。 请帮忙。

错误发生在班级的Node()部分。

 error: expected unqualified-id before ‘)’ token
  Node()
       ^

以下是代码:

    #include <iostream>
   #include <string>

   using namespace std;

   class AHuffman
   {

   public:
          class Node
          {
                  Node* right_child;
                  Node* left_child;
                  Node* parent;
                  Node* sibling;
                  int weight;
                  int number;
                  string data;
          };

          Node()
          {
                  right_child = NULL;
                  left_child = NULL;
                  parent = NULL;
                  sibling = NULL;
                  weight = 0
                  number = 1;
                  data = "";
          }

  //      int encode(string* msg, char** result, int rbuff_size);
  //      int decode(string* msg, char** result, int rbuff_size);
          AHuffman(string* alphabet);
          ~AHuffman();
  };

  int main(int argc, const char* argv[])
  {
          if(argc != 4){
                  //Invalid number of arguments
                  cout << "invalid number of arguments" << endl;
                  return 1;
          }
          string* alphabet = new string(argv[1]);
          string* message = new string(argv[2]);
          string* operation = new string(argv[3]);


          return 0;

  }

2 个答案:

答案 0 :(得分:4)

因为您将Node的构造函数放在其类之外:

无论如何,您应该在member initializer list中而不是在构造函数体中初始化其成员。

class Node
{
    Node* right_child;
    Node* left_child;
    Node* parent;
    Node* sibling;
    int weight;
    int number;
    string data;
public:
    Node()
      : right_child(0), left_child(0),
        parent(0), sibling(0),
        weight(0), number(1)
    {
    }
};

另外一点,你在C ++中不需要那么多new

答案 1 :(得分:0)

看起来像一个糟糕的复制粘贴代码。 '节点  构造函数首先要么在'Node'类中有一个声明,要么在里面移动定义。

你声明

class Node
      {
       private:                  // private members
              Node* right_child;
              Node* left_child;
              Node* parent;
              Node* sibling;
              int weight;
              int number;
              string data;
       public:                  // make it public so the class can actually be constructible 
              Node()
              {
                      right_child = NULL;
                      left_child = NULL;
                      parent = NULL;
                      sibling = NULL;
                      weight = 0;            // and delimiter here
                      number = 1;
                      data = "";
              }
        };