Announcement

Collapse
No announcement yet.

vector<class> C2664

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • vector<class> C2664

    Da ich unter den Suchbegriffen "vector" und "C2664" nichts
    gefunden habe, hier meine Frage:

    Leider habe ich ein Problem mit einem vector einer Klasse
    in einer Windows-Forms-Anwendung:

    In name.h steht

    // Fuer Speicherung einer Variablen und deren Wert
    public ref class Vari
    { public:
    String^ name;
    double value;
    Vari(String^ n, double v) : name(n), value(v) {}
    };

    In Form1.h steht

    . . .
    #include <cliext/vector>
    namespace TaRech_w
    {
    include "name.h"
    . . .
    using namespace cliext;


    public ref class Form1 : public System::Windows::Forms::Form
    {
    cliext::vector<Vari> tabelle;
    . . .

    double define_name(String^ var, double val)
    { tabelle.push_back(Vari(var, val);
    return val;
    }
    };
    }

    push_back liefert folgenden Fehler:
    error C2664: cannot convert parameter 1 from TaRech_w::Vari to TaRech_w::Vari^
    Vari x(var, val); tabelle.push_back(x); half auch nicht.

    Wenn ich statt des Vectors ein Array verwende, erhalte ich denselben Fehler.
    Ich verwende Visual Studio 2008. Übersetzt wurde mit /clr

    Was ist da zu tun? Vielen Dank für die Mühe.

  • #2
    Der Typ

    TaRech_w::Vari

    kann nicht in den Typen

    TaRech_w::Vari^

    umgewandelt werden
    Christian

    Comment


    • #3
      Die englische Version von Visual Studio benutze ich, um brauchbare Fehlermeldungen
      zu bekommen, denn die eingedeutschte Version leidet doch öfters unter schlechter
      Übersetzung. Nun mag ja die Antwort auf die Frage, was gegen den Fehler zu tun ist,´
      einfach sein - ich weiß sie aber nicht. Vor längerer Zeit habe ich etliches in C geschrieben
      und kürzlich einige Windows-Forms-Programme in C#. Aber C++ gefällt mir besser. Das
      jetzige Programm lief als Konsolenprogramm problemlos. Aber unter .NET scheint das
      ein Kampf gegen Windmühlenflügel zu sein. Das fing damit an, daß der Compiler den
      Gleichheitsoperator erklärt haben wollte. Man findet da in der online-Hilfe beliebig viele
      Varianten - aber keine funktioniert. Mit etlichem Nachdenken habe ich es hinbekommen.
      Und nun kämpfe ich mit dem vector. Mal sehen, was als nächstes kommt. Aber aufgeben
      werde ich nicht.

      Das push-back Statement habe ich wie folgt zerlegt:
      Vari x(var, val);
      tabelle.push_back(x);
      Daraufhin habe ich die erste Zeile wie folgt geändert:
      Vari ^x(var, val)
      Das quittierte der Compiler mit zwei Meldungen für diese Zeile:
      C2078: too many initializers
      C2440: initializing: cannot convert from 'double' to 'Variable ^'
      Zuletzt editiert von Amsel; 29.03.2011, 18:59.

      Comment

      Working...
      X