gpt4 book ai didi

c++ - 访问 C++ 类中定义的枚举

转载 作者:行者123 更新时间:2023-12-05 03:23:35 25 4
gpt4 key购买 nike

我有以下代码:

// Piece.h
class Piece
{

public:
enum class Color {BLACK, WHITE};

Piece();
Piece(int x, int y, Piece::Color color);


private:
int m_x;
int m_y;
Piece::Color m_color;
static const int UNINITIALIZED = -1;

};

如何从方法函数访问枚举:(尝试)

// Piece.cpp
Piece::Piece() :
m_x(Piece::UNINITIALIZED),
m_y(Piece::UNINITIALIZED),
m_color(Piece::Color BLACK) // PROBLEM
{}

Piece::Piece(int x, int y, Piece::Color color) :
m_x(x),
m_y(y),
m_color(color)
{}

问题:

Piece.cpp: In constructor ‘Piece::Piece()’:
Piece.cpp:8:24: error: expected primary-expression before ‘BLACK’
8 | m_color(Piece::Color BLACK)

我是 C++ 的新手,所以这可能不是好的代码实践,但我通常想知道如何实现这一点(并且也理解为什么我不应该这样写,如果这实际上是不好的实践)

谢谢

最佳答案

您可以像访问任何静态成员一样访问枚举(类)成员。Piece::Color::BLACK 在这种情况下。


在构造函数中,您可以省略“Piece”部分,只写以下内容:

Piece::Piece() :
m_x(UNINITIALIZED),
m_y(UNINITIALIZED),
m_color(Color::BLACK)
{}

关于您关于这是不良做法的暗示:事实并非如此。您可能会将 int 更改为 constexpr 而不仅仅是 const,但是无论您尝试对枚举值做什么都是完全没问题的。

关于c++ - 访问 C++ 类中定义的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72499080/

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