【发布时间】:2011-08-14 05:14:41
【问题描述】:
我有一个函数接口:
struct iFace {
virtual Type& getType() = 0;
}
我们的想法是像这样检索它:
iFace& iface = getIface();
Type& type = iface.getType();
但是,我偶尔会犯错误并写:
Type type = iface.getType();
按值复制,这是我想要避免的。但是,当我犯这样的错误时,编译器不会发出警告,因为它的语法是合法的。我想为此触发一个编译时错误,问题我的替代方案是什么?
我考虑过声明一个复制构造函数但没有在任何地方定义它,如果使用它会导致链接时错误,但是我将无法在 ANY 情况下使用复制构造函数,这不太理想
【问题讨论】:
-
你不能同时拥有它。
-
这就是我害怕的,所以我想在这里问它来确认。感谢您的确认
-
这取决于类型是什么。如果你可以将 Type 抽象化,那么你将无法创建实例。
标签: c++ default-copy-constructor return-by-reference