我有一些构造函数要做的工作,所以我在构造函数中调用了一个成员函数:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Token{
public:
Token() {}
Token(const string &targetfile);
void GetToken();
ifstream in;
};
Token::Token(const string &targetfile)
{
in.open(targetfile);
GetToken();
}
void Token::GetToken()
{
in.close();
}
int main(int argc,char *argv[])
{
Token first = Token(string(argv[1]));
return 0;
}
我得到这样的错误:
使用已删除的功能'Token :: Token(Token&amp;&amp;)' 注意:'Token :: Token(Token&amp;&amp;)'被隐式删除,因为默认定义是不正确的
答案 0 :(得分:0)
使用Token first(string(argv[1]));
代替Token first = Token(string(argv[1]));
这样就不会调用额外的移动操作符。