Overloading del operador = en una clase
-
martes, 30 de junio de 2009 16:00Hola,
Soy nuevo progamando en Visual C++ 2008 y me ha surgido un problemilla apriori sencillo con unas clases que he definido de la siguiente forma:
public ref class CRama1{
public:
Decimal m_Hoja1;
Decimal m_Hoja2;
};
public ref class CArbol{
public:
String^ m_Nombre;
Decimal m_Altura;
int m_NumeroArboles;
CRama1 m_Rama1;
}
Alguien podría decirme como se definiría el overloading de la asignación de esta clase Arbol, para poder hacer por ejemplo una asignación tipo Arbol2=Arbol1
Gracias de antemano,
Atentamente,
Aitor
Todas las respuestas
-
martes, 07 de julio de 2009 16:13Moderador
Hola.
Dadas las características de C++/CLI (más bien de .NET), tienes que definir al menos el constructor de copia, si bien es preferible definir también el operador de asignación. En tu caso, algo así (comprobado que funciona en Visual Studio 2008):
#include "stdafx.h" using namespace System; public ref class CRama1{ public: Decimal m_Hoja1; Decimal m_Hoja2; }; public ref class CArbol{ public: String^ m_Nombre; Decimal m_Altura; int m_NumeroArboles; CRama1 m_Rama1; //void operator=(CArbol %ar ){;} CArbol(CArbol %ar){} CArbol(){} }; int main(array<System::String ^> ^args) { CArbol c1; CArbol C1=c1; CArbol ^c2=gcnew CArbol(); CArbol ^C2=c2; return 0; }Lo que no he hecho es rellenar los constructores. También debes definir el constructor por defecto. Las dos primeras líneas en main() no son compatibles con otros lenguajes .NET.- Marcado como respuesta Juan Carlos Ruiz [BogotaDotNet.org] viernes, 10 de julio de 2009 18:54

