Nur eine C++ Datei wird gestartet?


08.06.2023, 21:56

Vielen Dank an jeden der fleißig kommentiert hat. Ich habe es inzwischen dank eurer Hilfe geschafft.

fuechs  06.06.2023, 18:19

Hast du die Funktion auch in der main-Funktion aufgerufen?

JessieF1507 
Fragesteller
 06.06.2023, 18:27

Naja wenn ich sowohl in main.cpp und in func.cpp int main() mache heißt es es ist bereits definiert

3 Antworten

Der Einstiegspunkt des Programmmes ist die main-Funktion. Bei Programmstart wird also nur das ausgeführt, was in der main-Funktion steht / aufgerufen wird.

Mehr als einen Einstiegspunkt kann ein Programm nicht haben.

Da du deine Funktion nun in eine andere Datei exkludiert hast, braucht es einen Verweis auf deren Deklaration.

Beispiel:

main.cpp

#include "other.h"

int main() {
  yourFunction();
  return 0;
}

other.h

void yourFunction();

other.cpp

#include "other.h"

void yourFunction() {
  /* do something ... */
}

Die main.cpp braucht nur einen Verweis auf die Deklaration der Funktion, welche in der other.h aufgeführt wird.

Du musst in der main-Funktion (welche es nur einmal geben kann) die Funktion aufrufen. Wenn die in einer anderen Datei ist, müsst du sie über eine Header-Datei in main.cpp "einfügen" (Schau dir am besten erstmal ein Tutorial zu C++ an).
Beispielsweise:


// func.hpp
#pragma once

<deklaration der funktion>

// func.cpp
#include "func.hpp"

<definition der funktion>

// main.cpp
#include "func.hpp"

int main(void) {
<aufruf der funktion>
return 0;
}

Woher ich das weiß:Hobby – Programmiere in Python, C/C++, Rust & Java.

Kopier deine Frage 1:1 in ChatGpt, dort kriegst du echt gute Hilfe.

Du kannst auch deine Codeausschnitte mit rein kopieren, und kriegst verbesserten Code zurück.

Und ja, das ist völlig normal. Bei uns in der Firma nutzt jeder Entwickler ChatGpt, der eine mehr, der andere weniger.

Ang619  06.06.2023, 18:15

Du kannst wirklich so vorgehen:

Ich habe eine c++ Anwendung geschrieben, und habe eine Methode in eine seperate Datei ausgelagert.

Jedoch kann ich nun von der Main Funktion nicht auf die Funktion zugreifen. Hier ist mein code der Main Funktion: include iostream public int.....{.... }

Und hier ist meine Methode die in der anderen Datei ist: public void addNumber(int x, int y){......

0