gpt4 book ai didi

c++ - "Rename"派生类中的成员变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:25 25 4
gpt4 key购买 nike

这个问题可能看起来有点奇怪,但我会尝试对用例进行一些争论。

假设您有一个二维(笛卡尔)场的通用实现,其维度为 dim1 和 dim2,坐标为 c1 和 c2。

struct Field2D {
struct size_type {
size_t dim1,dim2;
};
struct coordinates {
size_t c1,c2;
}
Field2D(size_type const & siz) : size_(siz), data(size_.dim1*size_.dim2) {}
double get(coordinates const & coords) {
return data_[coords.c1*size_.dim2 + coords.c2];
}
//Other methods
private:
size_type size_;
vector<double> data_;
};

你想继承这个类,但你想更明确地说明坐标的性质。例如,坐标为“x”和“t”,尺寸为“nx”和“nt”的字段 PositionVersusTime,我想使用它

int main(){
PositionVersusTime::size_type siz;
siz.nx = 5;
siz.nt = 2;
PositionVersusTime myField(siz);
PositionVersusTime::coordinates coords;
coords.x = 2;
coords.t = 0;
auto out = myField.get(coords);
return 0;
}

我想这样做的原因是顺序可能会根据字段(例如 TimeVersusPosition)而改变,有时会被用户“忘记”。有没有办法获得类似的行为?或者我应该简单地使用 setter/getter (例如,coords.x() = 2)?

最佳答案

没有。您不能“重命名”派生类中的基类成员。这根本不是语言所允许的。

变量在声明时获得它的名字,然后永远是它的名字。如果愿意,您可以为它创建别名(引用),或者您可以使用任何名称更改它的函数,但变量的基本名称在声明时是固定不变的。

关于c++ - "Rename"派生类中的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57190272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com