這個想法是,我想重用代碼,而不是重複它。下面,UnManagedB來自UnmanagedA。這兩個結構都有相應的託管包裝,如下所示。我想從ManagedA中派生ManagedB,以便我可以在ManagedA中重用ManagedB中的屬性。問題是這兩個類都有自己的指向非託管對象的指針。派生中的非託管對象是我想要的,我希望所有屬性都使用UnManagedB指針。有沒有辦法做到這一點?如何使託管包裝類使用另一個託管包裝類的屬性?
struct UnManagedA {
unsigned int size;
};
struct UnManagedB:UnManagedA {
int length;
int width;
};
public ref class A : public System::IDisposable {
public:
A();
!A();
~A();
property System::UInt32 Size {
System::UInt32 get();
void set(System::UInt32 value);
}
internal:
UnmanagedA* GetUnmanaged() { return obj1; }
private:
UnmanagedA* obj1;
};
public ref class B : public System::IDisposable, public A {
public:
B();
!B();
~B();
property System::UInt32 Length {
System::UInt32 get();
void set(System::UInt32 value);
}
property System::UInt32 Width {
System::UInt32 get();
void set(System::UInt32 value);
}
internal:
UnmanagedB* GetUnmanaged() { return obj2; }
private:
UnmanagedB* obj2;
};
和實際的問題是什麼?重複在哪裏?我在這裏看到沒有重複... – 2011-04-21 07:29:32
我寫的是我想要的,但它不可能,因爲基地和派生有他們自己的指向非託管對象。 – 2011-04-21 07:47:48
什麼是「不可能的」。派生和基地有自己的指針有什麼問題? – 2011-04-21 21:25:15