• Martes 18 de Junio de 2024, 15:16

Autor Tema:  Problema con el constructor de una estructura.  (Leído 1637 veces)

lilezek

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Problema con el constructor de una estructura.
« en: Jueves 24 de Septiembre de 2009, 17:11 »
0
Hola. Tengo este código en visual c++:

Código: C++
  1.  
  2.  
  3.  
  4.  
  5. // Meto 9 espacios para que la línea
  6. // 18 coincida con mi línea (ya que no puse el principio del archivo).
  7.  
  8.  
  9.  
  10. struct Calc  
  11.     {
  12.     private:
  13.         Ezek::Int64 __vbuffer1;
  14.         Ezek::Int64 __vbuffer2;
  15.         bool __vbuffer;
  16.         gcroot<TextBox^> TBarraDeTexto;
  17.     public: 
  18.         Calc(TextBox^ e)
  19.         {
  20.             TBarraDeTexto = e;
  21.             __vbuffer = true;
  22.             __vbuffer1 = Ezek::Int64(0);
  23.             __vbuffer2 = Ezek::Int64(0);
  24.             MaxNum = Ezek::Int64(0);
  25.         };
  26.         ~Calc()
  27.         {
  28.             TBarraDeTexto.~gcroot();
  29.         }
  30.         Ezek::Int64 MaxNum;
  31.         void RefrescarBDT(TextBox^ TBarraDeTexto)
  32.         {
  33.             TBarraDeTexto->Text = vbuffer().ToString() + ",";
  34.         }
  35.         void InsertarNumero(int Numero, TextBox^ TBarraDeTexto)
  36.         {
  37.             if ((Ezek::Int64)NDigitos(vbuffer()) + 1 >= MaxNum)
  38.             {
  39.                 // sonido de error
  40.                 return;
  41.             }
  42.             vbuffer() = vbuffer() * 10 + Numero;
  43.             RefrescarBDT(TBarraDeTexto);
  44.         }
  45.         void QuitarNumero(TextBox^ TBarraDeTexto)
  46.         {
  47.             vbuffer() = vbuffer() / 10;
  48.             RefrescarBDT(TBarraDeTexto);
  49.         }
  50.         void QuitarTodosLosNumeros(TextBox^ TBarraDeTexto)
  51.         {
  52.             vbuffer() = 0;
  53.             RefrescarBDT(TBarraDeTexto);
  54.         }
  55.         void CambiarBuffer()
  56.         {
  57.             __vbuffer = (!__vbuffer);
  58.         }
  59.         Ezek::Int64 vbuffer()
  60.         {
  61.             if (__vbuffer) return __vbuffer1;
  62.             else return __vbuffer2;
  63.         }
  64.         };
  65.  

Ese código está dentro de mi propio namespace Ezek junto muchos otros componentes, pero sólo este me da error (ni siquiera el me da warning los otros componentes, así que el problema está en este). Exactamente, el error reside en la línea del constructor Calc(TextBox^ e):

Código: Text
  1. 1>------ Build started: Project: Proyecto 1 (Calculadora Simple), Configuration: Debug Win32 ------
  2. 1>Compiling...
  3. 1>Proyecto 1 (Calculadora Simple).cpp
  4. 1>c:documents and settingsusuariomis documentosvisual studio 2008projectsproyecto 1 (calculadora simple)proyecto 1 (calculadora simple)calculadora(projecto1).h(18) : error C2512: 'Ezek::Int64' : no appropriate default constructor available
  5. 1>c:documents and settingsusuariomis documentosvisual studio 2008projectsproyecto 1 (calculadora simple)proyecto 1 (calculadora simple)calculadora(projecto1).h(18) : error C2512: 'Ezek::Int64' : no appropriate default constructor available
  6. 1>c:documents and settingsusuariomis documentosvisual studio 2008projectsproyecto 1 (calculadora simple)proyecto 1 (calculadora simple)calculadora(projecto1).h(18) : error C2512: 'Ezek::Int64' : no appropriate default constructor available
  7. 1>Build log was saved at "file://c:Documents and SettingsUsuarioMis documentosVisual Studio 2008ProjectsProyecto 1 (Calculadora Simple)Proyecto 1 (Calculadora Simple)DebugBuildLog.htm"
  8. 1>Proyecto 1 (Calculadora Simple) - 3 error(s), 0 warning(s)
  9. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
  10.