Definitionen in seperate Datei auslagern



  • Hallo zusammen,

    ich habe vor einiger Zeit mit C++ angefangen. Kleine Programme zu schreiben hat mit etwas Übung geklappt, aber nun stehe ich bei einer wahrscheinlich ganz einfachen Sache auf dem Schlauch. Ich schreibe erstmals ein etwas größeres Programm, wo man eine Matrix eingibt und dann nach langer Rechnung ein gewisser Output produziert wird. Weil die Matrzen bis zu 32x32 groß sind und damit über 1000 Einträge besitzen können, möchte man sie natürlich nur einmal eingeben und nicht bei jedem Testlauf aufs neue. Zur Zeit habe ich am Anfang des Programms eine Liste mit Matrizen definiert und ich rufe einfach die gewünschte Matrix auf. Dadurch ist die Datei aber sehr lang geworden und ich würde diese "Datenbank" mit Matrizen gerne in eine separate Datei auslagern, aber ich weiß nicht wie. Mit Hilfe von Google habe ich es auch nicht herausgefunden. Funktioniert es ähnlich wie beim erstellen einer Header Datei?

    Im Folgenden habe ich noch ein Minimalbeispiel:

    #include <iostream>
    using namespace std;
    
    int a = 0;
    
    int main() {
        int zahl;
    	cin >> zahl;
    	if (zahl == a)
    		cout << "!!!Hello World!!!" << endl;
    	else
    		cout << "!!!Hallo Welt!!!" << endl;
    	return 0;
    }
    

    Ich würde also gerne die Zeile "int a = 0;" in eine separate Datei auslagern wollen. Ich hoffe mir kann jemand helfen.



  • Wäre es nicht am einfachsten, eine zusätzliche Textdatei zu haben, aus der die die Matrix-Werte einfach ausliest? Dann kannst du auch irgendwelche variablen Matrizen einlesen, ohne neu kompilieren zu müssen.

    Ansonten mach doch eine Funktion, die dir die entsprechende Matrix zurückgibt.

    Oder (um deine Frage mit dem int a = 0; zu beantworten): Du kannst Variablen definieren, ohne sie zu deklarieren, indem du "extern" nutzt.
    extern Matrix supermatrix;

    Und in einer anderen cpp-Datei definierst du dann die Matrix-Variable.

    Es gibt bestimmt viele andere Möglichkeiten.

    Mir würde das mit der globalen extern deklarierten Variable jedoch nicht gefallen. Ich würde eher eine Funktion der Art " getPredefinedMatrix(enum meine_matrix_typen) " oder sowas haben wollen.



  • Abseits schrieb:

    Funktioniert es ähnlich wie beim erstellen einer Header Datei?

    Kann man machen.

    Eine .cpp Datei muss keinen Code enthalten. Die kann auch nur aus Variablendefinitionen bestehen.
    Allerdings muss sie dann mit compiliert und gelinkt werden.



  • wob schrieb:

    Du kannst Variablen definieren, ohne sie zu deklarieren, indem du "extern" nutzt.

    Eher umgekehrt!



  • Uups, sorry. Natürlich. Danke für die Korrektur, Belli.

    Ich schiebe den Fehler jetzt einfach mal auf die Hitze im Büro 😉



  • Ich habe jetzt die Idee mit der Textdatei umgesetzt. Das tut ja genau das was ich gerne hätte. Vielen Dank.


Log in to reply