有一件事一直困扰着我的大脑:我试图根据返回类型重载 [] 运算符。这是我需要做的:
class A {
private:
double* data_;
int N_;
public:
A (N=0):N_(N){
data_ = new double[N];
}
~A {delete[] data_;}
double operator[] (const int i) {
return data_[i];
}
double* operator[] (const int i) {
return &data[i]; // for example; in fact here i need to return some block of data_
}
};
此代码不会编译;这就是我的问题。有人可以帮我解决这个问题吗?
PS:我知道如何在返回类型上重载普通函数,例如:
int foo ();
string foo ();
我使用了我在这个论坛上读到的一些技巧。这样:
struct func {
operator string() { return "1";}
operator int() { return 2; }
};
int main( ) {
int x = func(); // calls int version
string y = func(); // calls string version
double d = func(); // calls int version
cout << func() << endl; // calls int version
func(); // calls neither
}
谢谢你。