当前位置: 首页 > 知识库问答 >
问题:

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

吴英武
2023-03-14

我想知道使用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个答案

逄嘉禧
2023-03-14

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

MyClass hi(hi.A);

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

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

 类似资料:
  • 问题内容: 我是Java的新手,我想问这个问题只是为了帮助我更好地理解OOP。 假设我要定义一个名为“小时”的新类。要实例化该类,我们需要指定一个整数以指示该实例的小时数。 因此,当我们在此处定义小时类别时,构造函数的参数应在[0,24)范围内。如果定义了超出此范围的参数,我们如何定义这样的参数?我可以抛出错误吗? 谢谢。 问题答案: 如果您希望 编译器 捕获错误,则可以为小时定义一个枚举,然后将

  • C++ 类 & 对象 类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地理解构造函数的概念:#include <iostream> using namespace std; class Line { public: v

  • 主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添

  • 问题内容: 我有两个类,和,扩展了前一个类。 具有以下构造函数: 我将注意到所有实例变量都已设置为private。 同时,具有以下构造函数: 但是,这为我的构造函数引发了“找不到符号”错误。 我尝试使用,但是我的超类的私有范围阻止了这种情况。 我发现向我的构造函数中添加字段并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法? 问题答案

  • 鉴于 IntelliJ IDEA 2016.1.1报告“可以替换为方法引用”。 我知道无参数构造函数的< code>Foo::new语法,但是不知道如何将< code>foo作为参数传入。我肯定漏掉了什么。