Struktur mit unterschiedlicher Array-Größe
-
Hallo.
Versuche grade folgendes:int Zahl = 5; struct Struktur { float Feld[Zahl]; };Nur geht das halt nicht und es kommt folgende Fehlermeldung:
'array bound is not a integer constant' //Also jetzt nicht unbedingt Wort wörtlichDeswegen hab ich es mit:
const int Zahl = 5; struct Struktur { float Feld[Zahl]; };Aber da kommt das gleiche.
Ok,jetzt weiß ich,dass es nicht geht,aber wie soll ich es sonst machen.
Wenn jemand eine Idee hat,kann er die bitte ja auch schreiben.
-
coder++ schrieb:
Deswegen hab ich es mit:
const int Zahl = 5; struct Struktur { float Feld[Zahl]; };Aber da kommt das gleiche.
Kann nicht sein, das geht nämlich. Du zeigst uns den falschen Codeausschnitt.
-
Ja.
Du weißt zahl vermutlich nicht direkt fünf zu, sondern irgendeiner anderen Variable. Oder so.Btw: Sieht nach schlechtem Design aus.
-
Benutzt du einen C-Compiler? In C++ sollte letzteres nämlich eigentlich gehen.
Insgesamt sieht das aber nach Unsinn aus. Es gibt kaum eine sinnvolle Anwendung dafür. Was genau hast du damit vor? Es kommt mir vor, als suchst du entweder std::array oder std::vector. Welches genau, das hängt von deiner Beschreibung des Vorhabens ab.
Sei dir auch sicher, welche Sprache du machst. Du fragst im C++-Forum, aber falls das tatsächlich C sein soll, dann wäre die Antwort eine ganz andere. Sind eben zwei ganz verschiedene Sprachen, trotz einiger Ähnlichkeiten.
-
Also Zahl ändert sich im Laufe des Programms und,wenn ich sie als Konstante
deklariere weise ich ihr eine temporäre Zahl zu.
-
Du suchst std::vector. Das sagt dir jetzt wahrscheinlich noch nichts, sollte in guten Büchern aber bald drankommen. Einfach weiterlernen.
Es wundert mich aber, dass du structs und Arrays schon kennst, vector aber noch nicht. Bist du wirklich sicher, dass du C++ machst?
-
Also ich versuche ein Objekt in Form einer Struktur zu erstellen,in das Vertexkoordinaten usw. gespeichert werden.
Dazu benutrze ich Felder.
Da ich aber nicht z.B: 100000-Große Felder erstellen will.
Richtet sich ihre Größe nach der Anzahl der Vertexe,Flächen,usw.
-
Dann passt die Antwort mit dem vector immer noch. Noch der gut gemeinte Rat (den du aber sicher nicht annehmen wirst und dich in ein paar Wochen darüber ärgerst), die Sprache erst einmal halbwegs vernünftig zu lernen, bevor du komplexe Programme damit schreibst oder gar Grafikbibliotheken benutzt. Selbst in C deutet dein obiger Versuch darauf hin, dass du die Grundlagen von structs und Arrays nicht verstanden hast. Und in C++ fehlen dir zusätzlich noch die allergrundlegendsten Mittel der Standardbibliothek. Wenn du dich erst einmal richtig auskennst, dann fallen dir auch solche Aufgaben ganz leicht. Wenn du hingegen loslegst, ohne dass du dich auskennst, dann funktioniert nichts, dauert ewig, ist umständlich und allgemein sehr frustrierend.
-
Ok.
-
Mit std::vector funktioniert es auch nicht.
Also man kann sie nicht in einer Struktur oder Klasse verwenden,da der Compiler den Typ nicht erkennt und int,float,usw. erwartet.
Klar könnte ich es einfach so machen:
vector<float>Vertex(Vertexanzahl);Aber ich will das ganze in einer Klasse haben,da aus dieser Klasse verschiedene Objekte erzeugt werden sollen.
Also:
class Objekt
{
vector<float>Vertex(Vertexanzah);
};Aber dies geht ja wie bereits erwähnt nicht.
Außerdem noch eine kleine Frage:
Wie macht man in diesem Forum beim Nachrichten schreiben,dass bestimmte Textteile als Code dargestellt werden.
-
Codetags, die für C++ sind unter
und :p, einfach einmal am Anfang drauf klicken und einmal am Ende des Codes.
Dir empfehle ich ein gutes Grundlagenbuch.BTW: Ist das ganze Overkill mithilfe von variadic templates die einzelnen Vertexelemente festlegen zu könne. In etwa so:
template <typename T, std::size_t Dims> using simple_vertex = basic_vertex<T, Dims, vertex_point_position>; template <typename T, std::size_t Dims> using colored_vertex = basic_vertex<T, Dims, vertex_point_position, vertex_point_color>; // selbes mit vertex_texture_coordinate, vertex_normal_vector, etc.Das habe ich nämlich gemacht.
-
Ich verstehe das Problem nicht. Was willst du genau machen und wo hackts?
Ja, du musst **[**code="cpp"]
Quellcode hierher kopieren[/code]. Der Button (C++) ist übrigens unten bei den Smileys.
-
Was er sucht sind Konstruktoren und Initlisten, out.
-
Um ehrlich zu sein hab ich schon Grundlagen-Handbücher gelesen,nur hab ich in weiteren Teile übersprungen und im ersten wurde vector nicht erklärt und sowieso wenig der Standardbibliothek,jetzt hab ich aber nochmal den kompletten teil der OOP gelesen.
Nur hab ich den Sinn und die Verwendung von Templates nicht ganz verstanden.Noch kurz ein test,ob das mit dem Code im Forum jetzt funktioniert:
int main() { int test; }
-
coder++ schrieb:
Um ehrlich zu sein hab ich schon Grundlagen-Handbücher gelesen,nur hab ich in weiteren Teile übersprungen und im ersten wurde vector nicht erklärt und sowieso wenig der Standardbibliothek,jetzt hab ich aber nochmal den kompletten teil der OOP gelesen.
Nur hab ich den Sinn und die Verwendung von Templates nicht ganz verstanden.Noch kurz ein test,ob das mit dem Code im Forum jetzt funktioniert:
int main() { int test; }Hmm warum die Code-Tags bei dir nicht funktionieren, verstehe ich nicht
Beim zitieren gehts mal.
-
Und die Codetags von anderen sehe ich auch.
-
Du hast die BB-cods deaktiviert. unter dem textfeld die checkboxen beachten
-
Ok,jetzt geht's mit den Codetags.