这个想法是,我想重用代码,而不是重复它。下面,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