1 c++
从某种程度上说,有些事情让我的大脑感到不安:我试图根据返回类型重载[]运算符.这是我需要做的:
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_
}
};
Run Code Online (Sandbox Code Playgroud)
这段代码不会编译; 那是我的问题.有人可以帮我解决这个问题吗?
PS:我知道如何在返回类型上重载正常函数,例如:
int foo ();
string foo ();
Run Code Online (Sandbox Code Playgroud)
我使用了一些我在这个论坛中读到的技巧.通过这种方式:
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
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
use*_*016 14
两个方法重载必须具有不同的签名.返回类型不是方法签名的一部分.
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |