gpt4 book ai didi

c++ - 从父类访问 Enum 的语法

转载 作者:行者123 更新时间:2023-11-27 22:43:03 32 4
gpt4 key购买 nike

我遇到一个程序错误。显然我遗漏了一些关于语法的东西。下面的 C++ 代码片段是产生错误的最小片段。

#include <iostream>
using namespace std;

class Parent
{
public:
enum MyEnum {
Value1,
Value2,
Value3
};

MyEnum* set;
};

class Child: public Parent
{
public:
Child()
{
set = new MyEnum[5];
set[0]=MyEnum.Value1;//<--Something wrong here
set[1]=MyEnum.Value2;//<--Something wrong here
set[2]=MyEnum.Value3;//<--Something wrong here
set[3]=MyEnum.Value2;//<--Something wrong here
set[4]=MyEnum.Value1;//<--Something wrong here
}

void Write()
{
for(int i=0;i<5;i++)
{
cout<< "This is " << i << ": " << set[i];
}
}
};

int main() {
Child c;
c.Write();

return 0;
}

错误与指示的语法有关。

 expected primary-expression before ‘.’ token

Parent.MyEnum.Value1、Parent::MyEnum.Value1 等我都试过了,好像都不对。我应该如何引用父类中的具体值?

最佳答案

枚举不需要限定它们的值,这意味着您应该像这样访问它们:

set[0] = Parent::Value1;

如果您想强制限定,您可以使用强类型枚举。它看起来像这样:

enum struct MyEnum {
Value1,
Value2,
Value3
};

set[0] = Parent::MyEnum::Value1;

但是你应该使用显式转换来打印它们,例如:

cout << static_cast<int>(set[0]) << endl;

关于c++ - 从父类访问 Enum 的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46530435/

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