【发布时间】:2010-10-07 18:15:03
【问题描述】:
我有一个类,在头部定义为:
template <typename T> class MyClass
{
template <typename U> friend std::ostream& operator<<(std::ostream& output, const MyClass<U>& p);
public:
...
}
在一个实现文件中,我有:
template <typename U> std::ostream& operator<<(std::ostream& output, const MyClass<U>& m)
{
output << "Some stuff";
return output;
}
这一切看起来都相当洁净。但是,当我尝试使用此运算符(即 std::cout
Undefined symbols: std::basic_ostream<char, std::char_traits<char> >& operator<< <InnerType>(std::basic_ostream<char, std::char_traits<char> >&, MyClass<InnerType> const&)
我很惊讶编译器没有自动为我生成这个......关于我做错了什么有什么建议吗?
【问题讨论】:
标签: c++ templates operator-overloading operator-keyword ostream