【问题标题】:Can I use an enum in a constructor for a class?我可以在类的构造函数中使用枚举吗?
【发布时间】:2016-01-16 01:02:47
【问题描述】:

我正在尝试创建一个类,并在该类内部定义一个名为 Type 的枚举。我可以使用我定义的枚举作为我的类的构造函数吗?如果是这样,我如何在课堂外访问它?

class Type {
public:
  enum TType { BLACK, WHITE, GRAY };
  Type(TType type, std::string value);
  ~Type();

...

这段代码没有给我任何错误,但是当我尝试在另一个类中创建这个类的实例时,它给了我一个错误,因为没有定义 BLACK:

Type piece(BLACK, value);

是否有一种特殊的方法可以做到这一点并且仍然将 TType 作为我的 Type 类的类构造函数?这是我第一次使用枚举,所以我不知道它们是如何工作的。

【问题讨论】:

    标签: c++ class constructor enums


    【解决方案1】:

    是的,你可以:

    Type piece(Type::BLACK, value);
    

    enum TType 在class Type 的范围内,因此在Type 的主体和成员函数之外访问它时必须使用范围解析。

    【讨论】:

    • 我也试过了,但是当我这样做时,它给了我错误:没有构造函数“Type::Type”的实例与参数列表参数类型匹配:(Type::TType, string)
    • 实际上我的代码的其他部分似乎有问题。我不确定它是怎么回事,但在我的代码的某些区域它给了我一个错误,但不是其他的。我会尝试解决,但感谢您的帮助。
    • @greyer 没问题,顺便说一句 here 是一个没有错误的干净示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多