考虑下面的代码:定义操作符<<课内
class MyClass
{
template <typename Datatype>
friend MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData);
// ...
};
template <typename Datatype>
MyClass& operator<<(MyClass& MyClassReference, Datatype SomeData)
{
// ...
}
我如何定义operator<<
内类,而不是一个友元函数?类似这样的:
class MyClass
{
// ...
public:
template <typename Datatype>
MyCLass& operator<<(MyClass& MyClassReference, Datatype SomeData)
{
// ...
}
};
上面的代码会产生编译错误,因为它接受两个参数。删除MyClassReference
参数可修复错误,但我拥有依赖该参数的代码。是MyClassReference
就等于*this
?
是'MyClass'的模板,需要一个'DataType'类型参数? – 2011-03-03 08:42:29
@David No;为了演示目的,使用“数据类型”代替实际类型。 – Maxpm 2011-03-03 17:27:25
@Maxpm:那么为什么你在似乎是一个定义中添加了'template'?你正在声明一个朋友函数,但是定义了一个不同于野兽的模板,因此不是朋友。 – 2011-03-03 19:41:09