gpt4 book ai didi

c++ - 如何制作一个好的设置/获取方法

转载 作者:太空狗 更新时间:2023-10-29 20:24:41 24 4
gpt4 key购买 nike

比如我们有这个类:

class Coord
{
double x;
double y;
double z;

public:
Coord() { x = y = z = 0; }

void set(double xx, double yy, double zz)
{
x = xx;
y = yy;
z = zz;
}

void set_x(double xx) { x = xx; }
void set_y(double yy) { y = yy; }
void set_z(double zz) { z = zz; }

double get_x() { return x; }
double get_y() { return y; }
double get_z() { return z; }
};

在这 7 种方法中,我们可以设置和获取坐标的 x、y 和 z。我对创建 less 方法 set()get() 感兴趣,我可以在其中调用类似的方法:

int main()
{
Coord c;

c.set_x(5); /* only set x */
c.set_y(6); /* or y */
c.set_z(7); /* or z */
c.set(1,2,5); /* or setting x, y and z */

c.get_x(); /* only get x */
c.get_y(); /* or y */
c.get_z(); /* or z */
}

最佳答案

如果 Coord 类这么简单,它也可以是一个 struct

无论如何你可以这样写:

class Coord
{
public:
enum xyz {x = 0, y, z};

Coord() : vec{x, y, z} {}

template<xyz C> void set(double v) { vec[C] = v; }
template<xyz C> double get() const { return vec[C]; }

void set(double xx, double yy, double zz)
{
set<Coord::x>(xx);
set<Coord::y>(yy);
set<Coord::z>(zz);
}

private:
double vec[z + 1];
};

并以这种方式使用类:

Coord c;

c.set<Coord::x>(5); /* only set x */
c.set<Coord::y>(6); /* or y */
c.set<Coord::z>(7); /* or z */
c.set(1,2,5); /* or setting x, y and z */

c.get<Coord::x>(); /* only get x */
c.get<Coord::y>(); /* or y */
c.get<Coord::z>(); /* or z */

关于c++ - 如何制作一个好的设置/获取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26859893/

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