看看下面的代码

头文件:

class CxUser
{
public:
    CxUser(string& guid) {}
};


我有一个使用CxUser(string("xxx-xxx-x-xxxx"))实例化该类的c ++文件。但是,此语句无法在g ++中编译,并显示错误“没有匹配的函数来调用CxUser :: CxUser(std :: string)”,而在VC ++中进行了编译。令人惊讶的是,以下代码实例化了类的工作原理。

string guid("xxx-x-xxxx-xxx-xx"); CxUser user(guid);


任何帮助,将不胜感激....

最佳答案

你需要:

class CxUser{ public: CxUser(const string& guid) {} }


当你说:

CxUser c( "foobar" );   // or whatever


从characterv数组创建一个临时字符串对象。在C ++中,您不能将非常量引用绑定到临时对象。

关于c++ - G++编译器中带有引用参数的构造方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3406031/

10-11 22:33