所以,我不断收到一个错误,说我需要一个不合格的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;
}
答案 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 = "";
}
};