私の問題は次のとおりです。
int main()
{
Base* derivedobject = new Derived1();
derivedobject->GetProperties()-> ???
return 0;
}
//********************
// BaseClass.h
//********************
struct PropertyStruct
{
int x;
};
class Base
{
public:
Base();
~Base();
virtual PropertyStruct GetProperties() = 0;
private:
};
//********************
// DerivedClass1.h
//********************
struct PropertyStruct
{
int y;
};
class Derived1 : public Base
{
public:
Derived1();
~Derived1();
PropertyStruct GetProperties() { return myOwnDifferentProperties; };
private:
};
//********************
// DerivedClass2.h
//********************
struct PropertyStruct
{
float z;
};
class Derived2 : public Base
{
public:
Derived2();
~Derived2();
PropertyStruct GetProperties() { return myOwnDifferentProperties };
private:
};
そのようにすると、PropertyStruct が再定義であるというエラーが表示されます。名前空間を使用するか、派生クラス内の構造体の名前を変更すると、戻り値の型が Base で定義されたものと同じではないというエラーが表示されます。仮想関数の戻り値の型をコンパイルするポインターとして定義すると、メイン メソッド (この例では) から関数 "GetProperties" にアクセスするときの次の問題は、ベース オブジェクトが派生クラスの構造体の中にある変数を認識しないことです。 .
これを実現する方法はありますか?各派生オブジェクトのさまざまなプロパティを取得できますが、基本クラスオブジェクトを使用していますか?