【发布时间】:2012-06-19 16:48:06
【问题描述】:
有一件事让我的大脑一直很困扰:我试图根据返回类型重载 [] 运算符。这是我需要做的:
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:例如,我知道如何在返回类型上重载普通函数"你确定吗?
-
你在说什么论坛?
-
您能告诉我们如何仅在返回类型上重载吗?我想这里很多人也想知道,因为他们不知道......
-
点击这个链接[link]stackoverflow.com/questions/442026/…
-
@user1427050 :该链接说它不能在 C++ 中完成。你在说什么?
标签: c++