【发布时间】:2015-08-22 12:39:48
【问题描述】:
我有这门课:
class Token {
std::string name; // token name
int frequency;//frequency
Vector lines;//lines where the token is present
public:
//explanations for the methods in the Token.cpp
Token(std::string tokenname, int linenumber);
virtual ~Token();
void newEntry(int &linenumber);
std::string getName();
int getFrequency();
std::string toString();
};
还有一个类
class Node {
Token data;
Node* next;
public:
Node(const Token &v);
};
在节点的构造函数中,我想传递一个对令牌对象的常量引用。但是当我在cpp文件中写方法时:
Node::Node(const Token &v){
data = v;
}
我得到一个编译器错误:
../src/List.cpp:在构造函数'Node::Node(const Token&)'中:../src/List.cpp:11:26:错误:没有匹配函数调用'Token:: Token()' Node::Node(const Token &v){ ^ ../src/List.cpp:11:26:注意:候选人是:在 ../src/List.h:10:0 包含的文件中, 来自 ../src/List.cpp:8: ../src/Token.h:19:2: 注意:Token::Token(std::string, int) Token(std::string tokenname, int linenumber) ; ^ ../src/Token.h:19:2: 注意:候选人需要 2 个参数,提供 0 ../src/Token.h:12:7: 注意:Token::Token(const Token&) class Token { ^ ../src/Token.h:12:7: 注意:候选人需要 1 个参数,0 提供 make: *** [src/List.o] 错误 1
我该如何解决这个问题?是什么导致了这个问题?好想传Token参考/
【问题讨论】:
-
再次阅读错误信息,它说
Token没有默认构造函数。然后搜索并阅读构造函数初始化列表。 -
您的节点应该包含所提供令牌的副本还是只指向一个已经存在的令牌?
-
这真的是复制品吗?我认为链接的问题不是回答 OP 问题的最佳方式。
-
这是比较基础的C++。您应该阅读语言基础知识。
标签: c++