自从片刻以来,有一件事让我的大脑产生了困扰:我试图根据返回类型重载[]运算符。这是我需要做的:返回类型的重载运算符[]返回类型
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
}
谢谢。
“* PS:我知道如何在返回类型上重载正常函数,例如*”你确定吗? – ildjarn
你在说什么论坛? – Paulpro
您能告诉我们如何纯粹重载类型吗?我想很多人也想知道,因为他们不知道... – PlasmaHH