que tienen una interesante pila de conjuntos quiero poner juntos:C# y C herencia de clases ++ entremezclando
Asamblea Común (C# o C++ - CLI)
public class MyBase { public void MethodA() { ... } private void MethodB() { ... } protected virtual MethodC() { ... } }
prueba ensamblados de código (todos los C++ - CLI)
public class MySpecific : public MyBase{ protected: override MethodC(); };
simulador de prueba (C#)
MySpecific obj = new MySpecific(); obj.MethodC();
Mientras que el conjunto 1 podría ser C++ - CLI para mantener las cosas más simples, que realmente me gustaría mantener el montaje 3 en C#. Esto es en gran medida un ejercicio para ver si la herencia se puede hacer en cualquier dirección, pero también tengo un caso en el mundo real donde esta pila es útil.
El primer problema que encuentro es que el ensamblado C++ - CLI no se compila porque no reconoce MyBase como clase, aunque tengo una referencia al ensamblado 1 y lo que parece ser el espacio de nombre adecuado.
¿Cómo escribo las clases que son portátiles en el lenguaje?
¿Cómo puedo obtener el compilador de C++ para ver MyBase? Sigo recibiendo "C2504: 'Mybase': clase base indefinida" – Foozinator
Asegúrate de que se haya agregado como referencia, y de que tienes este archivo compilado con/clr. Además, asegúrese de estar trabajando con (o utilizando) los espacios de nombres apropiados. Parece que no estás en una sección que usa el mismo espacio de nombres. Puede calificar completamente MyBase, es decir, clase de referencia pública MySpecific: public MyNamespace :: MyBase {...} –