【发布时间】:2016-06-08 13:14:57
【问题描述】:
在下面的代码中,我有一个带有成员类型(结构元素)的模板类。我想为那个成员类型重载运算符
如果有人能指出我哪里出错了,我将不胜感激?
include <iostream>
using namespace std;
// fwd decl
template<class T> class CC;
// operator<< overload template for member type CC<T>::Element
template<class T>
ostream& operator<<(ostream& os, const typename CC<T>::Element& elm) {
return os << elm.val1 << "/" << elm.val2;
}
template<class T>
class CC
{
public:
struct Element { // type member
int val1;
int val2;
};
template<typename U>
friend ostream& operator<<(ostream& os, const typename CC<U>::Element& elm);
};
int main() {
CC<int>::Element elm{0,0};
cout << elm << endl; // does not compile due to this!
}
【问题讨论】:
标签: c++ templates operator-overloading type-members