提问者:小点点

来自有限列表的C类构造函数参数


我想知道使用C++使类构造函数从有限列表中获取参数的最佳方法是什么。例如,如果我有一个名为colour的类,那么构造函数将只接受redgreenblue并将值存储到私有变量中。然后,我将有一个名为printcolour的方法,它将打印变量。

目前,我已经能够使这个工作:

#include <iostream>
using namespace std;

class MyClass
{
public:
    typedef enum { A = 3, B = 7 } Options_t;
    MyClass(Options_t);
    void printVal(void);
private:
    Options_t _val;
};

MyClass::MyClass(Options_t val)
{
    _val = val;
}

void MyClass::printVal(void)
{
    cout << _val << endl;
}

MyClass hi(MyClass::A);

int main(void)
{
    hi.printVal();
    return 0;
}

但是,用来访问类的结构的::符号似乎有点笨拙(我想编写一个Arduino库,所以初学者可能需要使用构造函数/方法。

有没有更好的方法(可能使用.表示法?)谢谢!


共1个答案

匿名用户

如果您只想在创建hi时这样做,那么您可以

MyClass hi(hi.A);

但是,在您的类中,必须使用命名空间访问器::.用于访问实例的成员,而不是实际的类内容。

他们可能在这里解释得更好:在C++中,我什么时候使用点号、箭头或双冒号来引用类的成员?这里是:“::”“之间有什么区别。”和“->”