マイcode:この列挙体をCTORに渡すのが間違っていますか?
#include <iostream>
enum EnvelopeMultiPointsType {
ENVELOPE_MULTI_POINTS_TYPE_NORMAL = 0,
ENVELOPE_MULTI_POINTS_TYPE_KICK_PITCH,
kNumEnvelopeMultiPointsTypes
};
class EnvelopeMultiPoints
{
public:
EnvelopeMultiPoints(EnvelopeMultiPointsType type) : mType(type) {
std::cout << mType << std::endl;
}
~EnvelopeMultiPoints() { };
private:
EnvelopeMultiPointsType mType;
};
class Test
{
public:
Test() { };
~Test() { };
private:
EnvelopeMultiPoints mEnv(EnvelopeMultiPointsType::ENVELOPE_MULTI_POINTS_TYPE_NORMAL);
};
int main()
{
Test test;
}
私がその列挙型を持つクラスを初期化することができないようです。理由は分かりません。私はここで何が欠けていますか?
オンラインコンパイラでは、は 'EnvelopeMultiPointsType'に 'ENVELOPE_MULTI_POINTS_TYPE_NORMAL'という名前の型がありませんが、上記のとおりです。
これは、引数としてenum値を使用しているためです。これは、関数宣言として 'EnvelopeMultiPoints mEnv(0);'を書くのと同じです。代わりに、 'EnvelopeMultiPoints mEnv(EnvelopeMultiPointsType a_type);'を使用してください。 –