initializing' : 'const float' kann nicht in 'struct texture_normal_vertex' konvertier

3Cyb3r

Erfahrenes Mitglied
Code:
static texture_normal_vertex quad[4] = 
   {
   //    tu    tv           nx    ny    nz              x     y       z
      { 0.0f, 1.0f, vector(0.0f, 1.0f, 0.0f), vertex(-15.0f, 0.0f, -15.0f) },
      { 0.0f, 0.0f, vector(0.0f, 1.0f, 0.0f), vertex(-15.0f, 0.0f,  15.0f) },
      { 1.0f, 1.0f, vector(0.0f, 1.0f, 0.0f), vertex( 15.0f, 0.0f, -15.0f) },
      { 1.0f, 0.0f, vector(0.0f, 1.0f, 0.0f), vertex( 15.0f, 0.0f,  15.0f) }
   };

Code:
struct texture_normal_vertex
{
// GL_T2F_N3F_V3F
   texture t;
   vector n;
   vertex v;
};

Code:
struct texture
{
   float u, v;
};

Code:
enum {x, y, z, w};

struct vertex
{
// GL_V3F
   float m[3];

   vertex() {   m[x] = m[y] = m[z] = 0.0f;   };
   vertex(float a, float b, float c) {   m[x] = a;   m[y] = b;   m[z] = c;   };

   float& operator[](int i)
   { 
      return m[i];
   }

   float operator[](int i) const
   { 
      return m[i];
   }

   float Length() const
   {
      return sqrt(m[x] * m[x] + m[y] * m[y] + m[z] * m[z]);
   }

   vertex& Normalize()
   {
      float length = Length();
      m[x] = m[x] / length;
      m[y] = m[y] / length;
      m[z] = m[z] / length;

      return *this;
   }

   friend vertex operator + (const vertex& a, const vertex& b)
   {
      vertex v(a[x] + b[x], a[y] + b[y], a[z] + b[z]);

      return v;
   }

   friend vertex operator - (const vertex& a, const vertex& b)
   {
      vertex v(a[x] - b[x], a[y] - b[y], a[z] - b[z]);

      return v;
   }

   friend vertex operator - (const vertex& b)
   {
      vertex v(-b[x], -b[y], -b[z]);

      return v;
   }

   friend vertex operator * (const vertex& a, const float scale)
   {
      vertex v(a[x] * scale, a[y] * scale, a[z] * scale);

      return v;
   }

   static vertex Cross(const vertex& a, const vertex& b)
   {
      vertex v;

      v[x] = (a[y] * b[z]) - (a[z] * b[y]);
      v[y] = (a[z] * b[x]) - (a[x] * b[z]);
      v[z] = (a[x] * b[y]) - (a[y] * b[x]);

      return v;
   }

   friend bool operator == (const vertex& a, const vertex& b)
   {
      return fabs(a[x] - b[x]) < EPSILON && fabs(a[y] - b[y]) < EPSILON && fabs(a[z] - b[z]) < EPSILON;
   }
};

typedef vertex vector;

error C2440: 'initializing' : 'const float' kann nicht in 'struct texture_normal_vertex' konvertiert werden
 
Hi.

Probier's mal so:
C:
static texture_normal_vertex quad[4] = 
   {
   //    tu    tv           nx    ny    nz              x     y       z
      { { 0.0f, 1.0f }, vector(0.0f, 1.0f, 0.0f), vertex(-15.0f, 0.0f, -15.0f) },
...
Gruß

PS: Grundsätzlich wäre es ganz nützlich zu wissen wo der Fehler auftritt.
 
Zuletzt bearbeitet:
ja genau in der Zeile
Wenn ich es so schreibe bekomme ich
Code:
error C2552: 'quad' : Initialisierung nicht zusammengesetzter Typen mit Initialisierungsliste ist nicht moeglich
c:\it\_md2\animation.cpp(448) : error C2078: Zu viele Initialisierungen
c:\it\_md2\animation.cpp(448) : error C2440: 'initializing' : 'struct vertex' kann nicht in 'struct texture_normal_vertex' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
c:\it\_md2\animation.cpp(448) : error C2440: 'initializing' : 'struct vertex' kann nicht in 'struct texture_normal_vertex' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
c:\it\_md2\animation.cpp(448) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.
MD2.CPP
 
ja genau in der Zeile
Wenn ich es so schreibe bekomme ich
Code:
error C2552: 'quad' : Initialisierung nicht zusammengesetzter Typen mit Initialisierungsliste ist nicht moeglich
Das ist eine Einschränkung des aktuellen C++ Standards. Man darf nur POD Typen über einer Initialisierungsliste initialisieren.

Wenn eine Struktur einen (nicht-trivialen) Konstruktor hat, ist sie kein POD Typ mehr (selbst wenn sie nur aus POD Typen zusammengesetzt ist).

Gruß
 
Alos alles einzeln zu intilaisieren. -.- Ok funktioniert
Aber ich meine mich erinnern zu können das nach neuerem standart dies Funktioniert aber den kenn mein Compiler nicht -.-
 
Zuletzt bearbeitet:
Zurück