具有名称的类中的初始变量

时间:2016-04-18 21:16:22

标签: c++

环境是带有clang和g ++的C ++ 14

我正在寻找像

这样的东西
"Point somepoint = Point(X=23);"

可以通过调用变量的名称在类中定义值,这应该在初始化时完成。

这里有一个简化的代码来解释我为什么不使用其他方法的问题。

#include <iostream>
using namespace std;

class Point {
    public:
    int X{4};
        int Y{8};
        Point(){};
        Point(int x) : X{x} {};
        Point(int x, int y) : X{x}, Y{y} {};
};

int main() {
    const Point one = Point();
    const Point two = Point(23);
    const Point tri = Point(42,23);

    cout << "tri: \t" << tri.X << "\t" << tri.Y << endl;
    cout << "two: \t" << two.X << "\t" << two.Y << endl;
    cout << "one: \t" << one.X << "\t" << one.Y << endl;

}

有一些变量,每个变量都有一个默认值。 我可以使用不同的值定义变量,但我将使用大多数默认值。有2个变量,只有4种可能,但我的真实代码有超过16个变量。

我可以使用构造函数。由于两种相同的数据类型,这不起作用。 构造函数Point(int X)和Point(int Y)不能在同一个类中。 解决方法是为每个变量定义自己的数据类型。这适用于2个变量,但我的真实代码还有更多。

最简单的想法是构造类,然后定义值。这不起作用,因为一,二和三是常量。

Point master = Point();
master.X = 33;
master.Y = 44;

一个想法是使用模板和基于字符串的自定义数据类型作为名称和值。但是像

这样的东西
Point(set("X",3), set("Y",42));

会比

更丑陋,更不易读
Point( Y = 3, X = 42)

并且具有实现本身的代码也将更不易读。在许多变量的情况下,它是一个重大问题。

我希望我能很好地解释我的问题以及为什么我要使用名字。 希望有人能为此找到解决方案。

最好的问候 保罗

0 个答案:

没有答案