【发布时间】:2017-12-29 16:37:00
【问题描述】:
这似乎是一个简单的解决方案,但对我来说已经有一段时间了。我说的是这段代码:
class MainWindow
{
public:
enum class Difficulty
{
Beginner,
Intermediate,
Advanced
};
struct DifficultyLevelsProperties
{
struct BeginnerProperties
{
const int PADDING_HEIGHT = 9;
const int PADDING_WIDTH = 9;
const int MINES = 10;
};
struct IntermediateProperties
{
const int PADDING_HEIGHT = 16;
const int PADDING_WIDTH = 16;
const int MINES = 40;
};
struct AdvancedProperties
{
const int PADDING_HEIGHT = 16;
const int PADDING_WIDTH = 40;
const int MINES = 99;
};
};
MainWindow();
~MainWindow();
private:
Difficulty difficulty = Difficulty::Beginner;
int mines = DifficultyLevelsProperties::BeginnerProperties.MINES;
int paddingHeight = DifficultyLevelsProperties::BeginnerProperties.PADDING_HEIGHT;
int paddingWidth = DifficultyLevelsProperties::BeginnerPropertiesPADDING_WIDTH;
我想要实现的目标非常明显。我尝试了许多使用“。”的组合。和 "::" 运算符在不同的地方或使它们成为静态的,但我仍然无法正确处理。我要么得到“'Difficulty' 不是类或命名空间”错误,要么得到“'.'之前的预期主表达式。”令牌”。请帮忙。谢谢!
【问题讨论】:
-
请发布导致错误的代码,以及项目中的位置以及包含它的文件。您是否正确使用了头文件?您确定不需要前向声明吗?您的嵌套类型是公共的,这是一种代码气味;您确定要使用嵌套类型而不是顶级类型吗?
-
我认为您应该为
DifficultyLevelsProperties使用实例数组,而不是单独的struct定义,因为它们具有相同的结构。 -
您的课程缺少结束语
}和;。这不是您遇到问题的代码。贴出真实代码。 -
非常感谢您的所有建议,顺便说一句非常有帮助,但我正在寻找解决问题的方法!我不知道你的第二条评论@Dai 是什么意思,你能用一个例子来解释或演示吗?