我的代码,
template<typename T>
class NamedObject{
public:
NamedObject(std::string& name, const T& value):nameValue(name), objectValue(value)
{
}
private:
std::string& nameValue;
const T objectValue;
};
int main(int argc, char* argv[])
{
NamedObject<int> obj1(std::string("Obj1"),3);
NamedObject<int> obj2(std::string("Obj2"),3);
obj2 = obj1; //this line gives error
return 0;
}
我收到错误,
错误1错误C2582:'operator ='功能不可用 'namedObject'c:\ users \ pkothari \ documents \ visual studio 2008 \ projects \ stackoflw \ stackoflw \ stackoflw.cpp 39
我没有提供任何operator =,编译器是否应该提供默认值?
@Edit显示为重复:我同意const,引用可以引用另一个对象的成员。
答案 0 :(得分:2)
模板与它无关。您的班级有一个const
数据成员,并且引用了string
。您需要从const
数据成员中删除string
属性作为参考说明符。我建议你不使用模板来实现这个类。