C++: Frage zu namespace [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dakuan
Beiträge: 97
Registriert: 28.04.2011 22:09:39

C++: Frage zu namespace [gelöst]

Beitrag von dakuan » 14.05.2021 19:19:29

Ich habe da eine kleine Sammlung einfacher Funktionen zur Bildmanipulation. Das sind nur Funktionen, keine Klassen. Diese habe ich alle in einer Datei unter einem Namensraum (ImageT=ImageTools) zusammengefasst.

Jetzt brauche ich aber eine neue Funktion und die bisherigen nicht. Daraus ergibt sich die Frage, ob ich die Funktionen auf unterschiedliche Dateien aufteilen kann, obwohl sie alle zum gleichen Namensraum gehören sollen?

Da mein Makefile schon ca. 30 Module enthält, möchte ich das nicht einfach blind ausprobieren, um anschließend festzustellen, dass ich alles wieder zurückdrehen muss.

Die "neue" Funktion ist bereits in mehreren Klassen lokal vorhanden, mit leicht abweichenden Namen, und dass soll jetzt zentralisiert/optimiert werden.
Zuletzt geändert von dakuan am 15.05.2021 20:26:51, insgesamt 1-mal geändert.

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: C++: Frage zu namespace

Beitrag von JTH » 14.05.2021 19:29:31

Du meinst so etwas?

Code: Alles auswählen

// Header a.h
namespace mynamespace {
  int do_foo();
  double calc_bar();
}

// Datei a.c
#include "a.h"

namespace mynamespace {
  int do_foo() { return 42; }
  double calc_bar() { return 3.1415; }
}

// Header b.h
#include <string>

namespace mynamespace {
  std::string get_baz();
}

// Datei b.c
#include "b.h"

namespace mynamespace {
  std::string get_baz() { return "baz"; }
}
Ja, das geht und ist kein Problem.

Die namespaces sind nicht an einen Header oder eine Compilationunit gebunden. Der std-Namensraum ist genauso über diverse Dateien mit Inhalt gefüllt, auch da bindest du ja nicht nur einen einzigen Header ein.
Manchmal bekannt als Just (another) Terminal Hacker.

dakuan
Beiträge: 97
Registriert: 28.04.2011 22:09:39

Re: C++: Frage zu namespace

Beitrag von dakuan » 14.05.2021 20:00:05

Ja, danke, genau das meinte ich.

Das bedeutet dann wohl auch, das ich meine bisherige Funktionssammlung in einzelne Dateien aufspalten kann um sie dann zu einer Lib zu machen wo dann beim Linken nur das verwendet wird, was auch wirklich benötigt wird.
Die namespaces sind nicht an einen Header oder eine Compilationunit gebunden.
Genau diese Info fehlt in meinen Büchern.

Antworten