C++ Variablendeklaration außerhalb der Unit

Chrisel

Cadet 4th Year
Registriert
Sep. 2010
Beiträge
70
Hallo alle zusammen,
meine Frage ist bestimmt für die Kenner unter euch ein Witz. Trotzdem finde ich im internet keine passende Antwort. Ich habe ein Programm geschrieben in dem ich eine Matrix(ein 2d-Array) verwende. Was in dem Array drinsteht geb ich gleich mit bei der Deklaration an. So ungefähr:
int feld[4][4]={
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1}}

Also das ist noch nicht das Problem:D ich möchte das Array nun viel größer machen und mein problem ist das dadurch meine main datei unnötig unübersichtlich wird. Ich möchte dieses Array in einer anderen Datei deklarieren unzwar so das ich es in meiner main datei problemlos nutzen kann. Für Hilfe wäre ich sehr dankbar:)

Viele Grüße
Chrisel
 
Einfach über
Code:
extern <typ> <name>;
einfügen im Header.
 
Wirklich eine Einsteigerfrage, die eigentlich in jedem Buch bzw. Tutorial abgedeckt sein müsste. Du machst sowas über
#include "Dateiname"
Das ist eine Präprozessordirektive, die die angegebene Datei an dieser Stelle einfügt.

Das weitere überlasse ich Google. ;) Einfach nach "Include" suchen, dann findest du alles nötige.
 
es gibt die funktion arraycopy oder so ähnlich.

Müsste dann sowas in etwa sein:

int feld2[10][10]; // zahl 10 als beispiel
feld2.arrayCopy(feld);

kann auch sein dass es anders heißt oder funktioniert, aber die worte "array" und "copy" kamen definitiv dran ;).
 
und in was für eine Datei schreibe ich dann das Array?:)
Kannst du mir ein Beispiel geben?:)
Danke für deine Antwort!:))
 
Meine Güte, Leute, er will es nur der Übersicht halber aus der Datei rausverschieben. Wenn er sowas noch nicht kann, ist er noch weit entfernt von Klassen. Also eins nach dem anderen.

@TE: Einfach eine Datei z.B. "Krimskrams.cpp" erstellen, den Quelltext da rein und in die main-Datei ein "#include "Krimskrams.cpp"" einfügen. Dann wird der Kompiler den Inhalt von Krimskrams.cpp an der Stelle des includes einfach während des Kompilierens rein kopieren.

P.S.: Du solltest C++ von vornherein schrittweise angehen, damit du dir auch einen entsprechenden Programmierstil angewöhnst. Das Aufsplitten von Dateien und das Konzept von Klassen und objektorientierter Programmierung sind essenziell. ;)
Wie gesagt, die meisten Bücher und Tutorials gehen diese Themen an, bevor du Datentypen wie Matrizen etc. kennenlernst, weil es Grundwissen ist. Such dir bei Google gute Tutorials raus bzw. C++-Kurse, dann wirst du langfristig glücklich. ^^
 
Zuletzt bearbeitet:
Hab das jetzt so probiert:
Hab mein Array wie es vorher im quelltext stand in eine Datei Namens "Variablen.cpp" kopiert und in meine main:
#include "Variablen.cpp"
geschrieben.
Folgenden Fehler wirft mir der Compiler an dem Kopf:
multiple definition of `feld'

Was mache ich falsch?
 
Chrisel schrieb:
Folgenden Fehler wirft mir der Compiler an dem Kopf:
multiple definition of `feld'
Code:
#ifdef VARIABLEN_H
#define VARIABLEN_H

// hier dein code

#endif
In Visual Studio alternativ über
Code:
#pragma once

// hier dein code
Und pack es bitte in einen Header (*.h).
 
Super danke!:) hat funktioniert:)
Danke für eure Hilfe:)
Viele Grüße
Chrisel
 
Fortatus schrieb:
@TE: Einfach eine Datei z.B. "Krimskrams.cpp" erstellen, den Quelltext da rein und in die main-Datei ein "#include "Krimskrams.cpp"" einfügen. Dann wird der Kompiler den Inhalt von Krimskrams.cpp an der Stelle des includes einfach während des Kompilierens rein kopieren.

Eine Ergänzung zu dem zitierten Text: Wenn du das so machst wie oben beschrieben, bitte aufpassen, daß du Krimskrams.cpp nicht kompilierst, sonst wird sich der Linker später über mehrfach definierte Symbole beschweren.

P.S. Oh, ich sehe, genau das ist dir schon passiert. ;)
Ergänzung ()

Yuuri schrieb:
Code:
#ifdef VARIABLEN_H
#define VARIABLEN_H

// hier dein code

#endif
In Visual Studio alternativ über
Code:
#pragma once

// hier dein code
Und pack es bitte in einen Header (*.h).

Nur noch mal zum besseren Verständnis, das entscheidende waren hier nicht die inclusion guards (obwohl die natürlich immer in einen Header gehören) sondern die Umbenennung der Datei in eine *.h-Datei. Dadurch wird Visual Studio die Datei dann nämlich nicht mehr kompilieren, weshalb es dann später beim Linken nur noch eine Definition das Arrays gibt.
Eine *.cpp-Datei hingegen wird vom Visual Studio hingegen per Default als Übersetzungseinheit (also als eine zu kompilierende Datei) angesehen.
 
Zuletzt bearbeitet:
Zurück
Oben