我有此類:爲什麼我不能在這裏通過引用傳遞類對象?
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: In constructor ‘Node::Node(const Token&)’: ../src/List.cpp:11:26: error: no matching function for call to ‘Token::Token()’ Node::Node(const Token &v){ ^../src/List.cpp:11:26: note: candidates are: In file included from ../src/List.h:10:0, from ../src/List.cpp:8: ../src/Token.h:19:2: note: Token::Token(std::string, int) Token(std::string tokenname, int linenumber); ^../src/Token.h:19:2: note: candidate expects 2 arguments, 0 provided ../src/Token.h:12:7: note: Token::Token(const Token&) class Token { ^../src/Token.h:12:7: note: candidate expects 1 argument, 0 provided make: *** [src/List.o] Error 1
我怎樣才能解決這個和是什麼原因導致這個問題?我真的想通過令牌參考/
再次讀取錯誤消息,它說是'Token'沒有默認構造函數。然後搜索並閱讀*構造函數初始化列表*。 –
您的節點應該包含提供的令牌的副本還是隻指向已經存在的令牌? – buygrush
這真的是重複的嗎?我不認爲這個鏈接的問題是最佳方式回答OP問題。 – rozina