基本クラスと派生クラスの配列を別のクラスに設定しようとしています。たとえば、私は基本クラスを持っています:
class Base{
public:
Base() {};
Base(float kv) : param(kv) {}
~Base() {};
float getParam() { return param; }
void setParam(bool kv) { param= kv; }
protected:
float param;
};
および次のような派生クラス:
class Derived1: public Base{
public:
Derived1() {};
Derived1(float kv) : Base(kv) {}
~Derived1() {};
};
さて、別のクラスに Base 型の配列があります。
class Hive{
public:
Hive() {};
Hive(...) : ... {}
~Hive() {};
...
float getSomethingFromArray();
...
void setB();
protected:
...
Base *b[7];
};
次に、setB()
次のように配列をインスタンス化します。
b[0] = new Derived1();
しかし、b[0] のメソッドにアクセスしようとすると、うまくいきません。次のようなメソッドを呼び出すと:
b[0].setParam(i);
コンパイラはこのエラーを報告します
IntelliSense: 式にはクラス型が必要です c:\users\miller\documents\visual studio 2010\projects\hello\hello\objekat.h 139 2 こんにちは