プログラムでエラーが発生しました。明らかに私は文法について何か不明です。以下の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、親:: MyEnum.Value1、などを試してみましたが、何が正しいように思いません。親クラスの特定の値をどのように参照する必要がありますか?
'MyEnum.Value1; // < - 何か間違っています.' - 構文。あなたが通常の列挙型を持っているならば、ちょうど 'Value1'です。 [良い本を選んでください](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)、それはそれ以上のことを教えてくれるでしょう。 – StoryTeller
質問があるので、誰かが初心者か読んでいると推測したいと思う人はどうですか?私は3つのC++の本を手に入れることはできません。ありがとうございました。質問に戻ると、その構文はなぜ受け入れられますか?そして、正確には「通常のenum」は何ですか?異なる種類の列挙型はありますか? – BSD
あなたの3冊の本はスコープとスコープのない列挙についてあなたに教えてくれませんでしたか? – StoryTeller