【发布时间】:2011-05-16 04:43:29
【问题描述】:
我正在寻找这样的语法:
class Hugo
{
Hugo();
explicit Hugo( const Hugo& hugo );
Hugo GetRandomHugo()
{
Hugo hugo;
hugo.value = rand();
// this would fail:
// return hugo;
return Hugo(hugo); // explicit copy!!
}
};
换句话说:我正在寻找一种显式的复制语法,以允许方法返回一个副本,即使我的复制构造函数是显式的。
我使用的是 GCC 4.4.5。
非常感谢,
查理
【问题讨论】:
-
原样的代码有什么问题?
-
为什么你的复制构造函数是显式的?为什么说,“我希望我的复制构造函数是显式的,但我也想执行隐式复制”?使构造函数显式化的全部意义在于防止隐式转换,但复制构造函数并没有真正“转换”任何东西,它的存在是为了支持初始化、参数传递等。
-
@Steve:据我了解,他不想要执行/允许隐式复制,同时仍然具有启用按值传递语义的显式语法。
-
错误:没有匹配函数调用'Hugo::Hugo(Hugo)'
-
看起来 C++ 非常擅长创造新类型的问题。
标签: c++ gcc explicit-constructor