나는 개체의 집합을 가지고, 다른 유형의 모두는 이러한 개체의다른 비 관련 객체에서 동일한 함수를 호출합니까?
CTree^ oTree;
CCar^ oCar;
CHouse^ oHouse;
모든 클래스가
static EnumResult SetValueDebug (EnumPID i_enPID, Object^ i_Object);
곳 EnumResult 및 EnumPID ("매개 변수 ID")와 동일한 기능을 갖고 있다고 할 수 있습니다 각 클래스에 정의되어 있습니다.
내 생각은
Object^ oResult;
array<Object^>^ ao = gcnew array<Object^>{oTree, oCar, oHouse};
for (int iCnt = 0; iCnt < ao->Length; iCnt++)
oResult = ao[iCnt]->SetValueDebug (ao[iCnt]->EnumPID::Param1, DefaultValue);
// call it on the real object although it's a static function, because there is
// no dynamic_cast<ao[iCnt]->GetType>(ao[iCnt]) ::SetValueDebug (...
같은 것을 만드는 것이었다 그러나 나는 방법을 모른다.
내가 상속을 사용하여 생각 : m_aObject가 상속 클래스에서 액세스 할 수 있습니다ref class CSuperior
{
public:
enum class EnumResult { ... };
enum class EnumPID { ... };
static EnumResult SetValueDebug (EnumPID i_enPID, Object^ i_Object)
{
m_aoValue[(int)i_enPID] = i_Object
};
protected:
array<Object^>^ m_aObject;
...
}
. 이게 효과가 있니?
다른 클래스의 클래스를 이미 상속하고 있기 때문에 상속이 실패 할 수 있습니다.
인터페이스 사용도 afaik에서 실패합니다.
위에서 설명한 것과 같은 것을 실현할 수있는 기회가 있습니까?
...이 인터페이스를 구현할 수 있지만, 당신은 그들이 특정 방법, 당신은 문자열 메소드 이름 –
에 의해, 반사를 사용하여 호출 할 수 있는지 확실히 알고 감사합니다. 앞으로의 사용을 염두에 두겠습니다. 나는 상속을 사용함에 대해 다시 생각하고 있는데, 상급 계층이 내 신청서에 가질 다른 긍정적 인 효과를 발견했다. 각 클래스는 상위 클래스에서 상속받습니다. 이미 상속받은 다른 클래스는 기본 클래스를 통해 상급 클래스를 상속받습니다. 그래서 모든 것이 잘되어야합니다. –