我有一个模板类:
template<class T>
class MyClass
{
public:
MyClass(T mem)
{
member = mem;
}
T& GetMember() const
{
return(member);
}
T member;
};
然后我这样做:
MyClass<bool> test(true);
bool someBool = test.GetMember();
我收到编译错误,说它无法将'bool'转换为'bool&amp;' 我该如何解决这个问题?
答案 0 :(得分:3)
问题是你有一个const成员函数,但是你从它返回一个可变引用。 (btw cl的错误消息是error C2440: 'return' : cannot convert from 'const bool' to 'bool &'
,这使得这一点清楚)。这可能不是你真正的意图,所以要么使用
T GetMember() const
{
return member;
}
或
const T& GetMember() const
{
return member;
}
答案 1 :(得分:1)
T& GetMember() const
应该是
const T& GetMember() const
const
不仅仅是让您的代码看起来更安全的关键字,它还可以使您的代码更加安全;)