我正在尝试使用类模板indexedList的简单输出函数和一个简单类的对象。我已经将类中的输出操作符重载为友元函数,如下所示:
//in header file
friend ostream& operator <<(ostream&, simpleClass&);
//in implementation file
ostream& operator <<(ostream& out, simpleClass& c1){
out << c1.stringDataMem;
return out;
}
它本身可以正常工作,但是当我尝试将它与类模板indexedList一起使用时,编译器会给出错误。这是类模板中的输出函数:
//in header file
void display() const;
//in implementation file
void indexList<T, maxSize>::display() const{
for (int i = 0; i < size; i++)
cout << elements[i] << endl;
}
在驱动程序中,我只是将simpleClass的一些对象附加到simpleClass indexedList的“elements”数组中,并尝试使用display()函数。这是我收到的唯一错误消息:
"IndexList.cpp", line 38: Error: Formal argument 2 of type simpleClass& in call
to_operator<<(std::basic_ostream<char, std::char_traits<char>>&, simpleClass&)
requires an lvalue.
类模板和简单类都可以自行运行,但组合它们不会。任何帮助将不胜感激!
答案 0 :(得分:1)
不熟悉'indexList',但由于display()是一个const方法,因此elements [i]可能会返回一个 const simpleClass&amp;,因此你试图删除const您对运营商的调用中的限定符&lt;&lt; ()。
尝试使用运算符&lt;&lt; ()采用const引用。