【发布时间】:2018-03-13 19:33:46
【问题描述】:
我收到一个程序错误。显然我错过了一些关于语法的东西。下面的 C++ 代码的 sn-p 是产生错误的最小的。
#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 等。似乎没有什么是正确的。我应该如何引用父类中的特定值?
【问题讨论】:
-
MyEnum.Value1;//<--Something wrong here- 语法。如果你有一个常规的枚举,它只是Value1。 Pick a good book,它会告诉你更多。 -
人们喜欢假设某人是新手或阅读障碍,因为他们有一个问题,这是怎么回事。就像我手边没有三本 C++ 书籍一样。感谢那。回到问题,为什么这种语法是可以接受的?究竟什么是“常规枚举”?有不同类型的枚举吗?
-
什么,你的 3 本书没有告诉你范围和非范围枚举?
-
曾经尝试搜索不认识的单词?就像你怎么称呼你喉咙后面的那个东西。书太多,搜索能力太少。但是谢谢你的术语。
-
好吧,一本书可能无法搜索,but the internet is(先打谷歌,你可以查)。你问我为什么认为你是新手?因为您犯了一个基本的语法错误,并且没有在 online 中搜索您误用的结构的正确用法。这是新手的错误。所以你可以免去你的愤慨,我的cmets并非完全没有根据。