내 문제를 사용하여 파생 클래스의 정보에 액세스하면 다음과 같다 :문제적인 디자인 개질시키기는/기본 오브젝트
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"함수에 액세스 할 때의 기본 문제는 파생 된 구조체 안에 어떤 변수가 있는지 알지 못합니다 수업.
이것을 실현할 수있는 방법이 있습니까? 파생 된 각 객체의 다양한 속성을 가져올 수 있지만 기본 클래스 객체를 사용할 수 있습니까?
두 개의 'PropertyStruct'사이에 서로 다른 이름으로 기본 파생 관계를 설정할 수 있습니다. – iammilind