当类的构造函数调用其成员函数时,会发生删除函数错误的使用吗?

时间:2015-10-24 15:18:05

标签: c++

我有一些构造函数要做的工作,所以我在构造函数中调用了一个成员函数:

    #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;)'被隐式删除,因为默认定义是不正确的

1 个答案:

答案 0 :(得分:0)

使用Token first(string(argv[1]));代替Token first = Token(string(argv[1]));

这样就不会调用额外的移动操作符。