给定以下模板函数:
template <class T>
void DoSomething(T &obj1, T &obj2)
{
if(obj1 > obj2)
cout<<"obj1 bigger: "<<obj1;
else if(obj1 == obj2)
cout<<"equal";
else cout<<"obj2 bigger: "<<obj2;
T tmp(3);
T array[2];
array[0]=obj1;
array[1]=obj2;
}
我需要定义一个名为 MyClass 的类(仅声明,即仅 .h 文件),它可以与该模板函数一起使用。 我定义了下一个声明:
class MyClass
{
public:
MyClass(); // default ctor
MyClass(int x); // for ctor with one argument
bool operator ==(const MyClass& myclass) const;
bool operator >(const MyClass& myclass) const;
friend ostream& operator<<(ostream &out,const MyClass& myclass); // output operator
};
我不明白的是为什么不需要为这些行定义运算符[]:
array[0]=obj1; array[1]=obj2;
?我什么时候需要定义运算符[]? 谢谢,罗恩
最佳答案
您为您的类型声明了一个数组:
T array[2];
但是你说的是为 T
实现 operator[],这是完全不同的概念。
如果你需要
T t;
t[1] = blah
然后你需要实现operator[]
关于c++ - 我什么时候需要实现 operator [] ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240304/