看看下面的代码
头文件:
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/