2 Konstanten, die auch in eingebundenen Dateien gelten sollen

maria

Grünschnabel
Hallo,

ich habe ein Programm geschrieben mit einer haupt.cpp Datei und mehreren Klassen.
Diese Klassen sind ausgelagert als .h und .cpp dateien und in der Hauptdatei eingebunden.

Für das gesamte Programm muss ich zwei Konstanten definieren, die in allen Dateien
vorkommen.
Ich habe das über #define n 3
und #define m 2
gemacht und zwar nur in den header Dateien, da in den zugehörigen cpp Dateien die header
Dateien eingebunden sind und in der Hauptdatei alle cpp Dateien.

Der Algorithmus läuft auch und liefert das richtige Ergebnis, doch wenn ich den Wert von m
ändere, wird dieser nicht übernommen. Jedoch sollte das ja der Sinn sein, dass ich m nicht
überall ändern muss...

Gibt es bessere Möglichkeiten als #define, sodass ich die konstante an möglichst wenig Stellen
verändern muss?
Wie initialisiere ich global, wenn ich viele verschiedene header und cpp Dateien habe?

So sieht zum Beispiel die header Datei einer meiner Klassen aus, in der nur m benutzt wird...

#ifndef matrix3_H
#define matrix3_H
#define m 2

class matrix3
{
public:

double mat3[m][m];

...

};
#endif
 
Hi,
willkommen im Forum! Bitte halte dich aber an die Regel und poste deinen Code in [ code=cpp ] und [ /code ]-Tags.
Zu deinem Problem:
Du kannst eine Header-Datei schreiben, die du dann in allen anderen Header-Dateien includest, und in dieser Datei steht dann dein #define.
 
Danke für deine Antwort und Entschuldigung, wenn ich die Regeln nicht beachtet habe!
Ich habe jedoch leider nicht verstanden, was genau falsch war an meinem Eintrag :confused:

Ich habe eine neue header Datei geschrieben. Es hat beim ersten Durchlauf auch geklappt,
beim ändern von den Konstanten, wurde der neue Wert nicht übernommen.

Es erscheint eine Warnung:
W8017 "Redefinition" von m ist nicht identisch in Zeile...

Weißt du woran das liegen könnte?
 
maria hat gesagt.:
Danke für deine Antwort und Entschuldigung, wenn ich die Regeln nicht beachtet habe!
Ich habe jedoch leider nicht verstanden, was genau falsch war an meinem Eintrag :confused:
Statt dem hier:
Code:
#ifndef matrix3_H
#define matrix3_H
#define m 2
class matrix3{
  public:
 double mat3[m][m];
...
};
#endif

sollst du den Code in CPP-Tags setzen: [ code ]...code...[ /code ] (ohne Leerzeichen)
Das sieht dann so aus:
C++:
#ifndef matrix3_H
#define matrix3_H
#define m 2

class matrix3
{
  public:

 double mat3[m][m];

...

};
#endif

Zu dem Fehler:
Du hast wahrscheinlich in der neuen Header-Datei die Konstante definiert, und in einer anderen Header-Datei nochmal mit einem anderen Wert definiert. Du darfst Konstanten aber nur einmal definieren, sonst wären es ja keine "Konstanten". ;)
 
Zuletzt bearbeitet von einem Moderator:
Danke, jetzt hab ichs verstanden :)

Und das Problem ist auch gelöst. Ich habe das Programm noch einmal neu gestartet,
dann hat es komischerweise erst funktioniert..
 
Zurück