Wie übergebe ich Variabeln von einer Unit in eine andere (gleiches Projekt)

moin


Oder "einfacher":

Code:
#include <iostream>


int var=0;


void Unit1()
{
	//var um eins erhöhen
	var++;
}

void Unit2()
{
	//var noch mal erhöhen und ausgeben
	std::cout<< ++var;
}

int main()
{
	for( int l=0; l<10; l++)
	{
		Unit1();
		Unit2();
		std::cout<<" ";
	}

	std::cin.get();

	return 0;
}


@RedWing
Gibt es einen Grund das du ein return 1; am Ende deines Programms machst?


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Ja wegen des Rückgabewertes an das BS...
Bin es so von Testprogrammen gewöhnt, das das testsuitetoll das ich zum Testen
verwende einen erfolgreichen Test mit einer 1 auswertet...

Gruß

RedWing
 
Also, wenn ich das richtig verstehe, will PRPro folgendes:

Offensichtlich geht es ja um Borland C++Builder... Fügt man zu einem leeren Standardprojekt nun ein weiteres Formular (Form2) hinzu, so wird gleichzeitig auch noch eine dazugehörige Unit2.cpp erzeugt.
Deklariert man jetzt z. B. in Unit2.cpp oder Unit2.h eine Variable int test = 5;, so kann man darauf ja offensichtlich nicht von Unit1.cpp aus zugreifen, da sie da ja als nicht deklariert erscheint... Das ist wohl das Problem.

Naja, aber eine Antwort habe ich auch nicht. :rolleyes:
 
moin


Mag sein.
Aber auch für den Umstand das es mit dem Borland..... gemacht wird, passen die obigen Antworten!

Er müsste sich nur mal wieder melden.


mfg
umbrasaxum
 
Ich sag ja garnichts gegen die obigen Antworten... :)
Aber ich glaube, beim BCB würde der obige Code nicht ganz passen, jedenfalls nicht direkt. :rolleyes: Glaube ich, wie gesagt. ;)
 
randomize hat gesagt.:
Also, wenn ich das richtig verstehe, will PRPro folgendes:

Offensichtlich geht es ja um Borland C++Builder... Fügt man zu einem leeren Standardprojekt nun ein weiteres Formular (Form2) hinzu, so wird gleichzeitig auch noch eine dazugehörige Unit2.cpp erzeugt.
Deklariert man jetzt z. B. in Unit2.cpp oder Unit2.h eine Variable int test = 5;, so kann man darauf ja offensichtlich nicht von Unit1.cpp aus zugreifen, da sie da ja als nicht deklariert erscheint... Das ist wohl das Problem.

Naja, aber eine Antwort habe ich auch nicht. :rolleyes:

Juhu Ich wurde verstanden. Genau das ist es!

Es tut mir nur leid ich kann eure Antworten oben nicht unbedingt alle nachvollziehen
 
Ich gehe mal davon aus, daß das im BCB nicht anders läuft, als wenn man Code from Scratch schreibt...

ich denke, der BCB wird (ich kenne ihn nicht) für jedes Form eine eigene Klasse angelegt haben, die da heißen werden "Unit1" und "Unit2". Da du nun auf die Hauptinstanz von Unit1 des Programms von Unit2 aus zugreifen möchtest, brauchst du erstmal eine Verbindung zwischen den beiden Klassen. Dazu musst du Unit2 sagen, daß da irgendwo in deinem Projekt eine Unit1 existiert. Wenn diese Instanz global angelegt ist (wovon ich ausgehe), dann sollte es ausreichen, in Unit2 die Unit1.h zu inkludieren und später die Unit1 Instanz extern zu deklarieren:

Code:
// Unit2.h
#include "Unit1.h"

extern Unit1 Hauptinstanz; // "Hauptinstanz" ist der Name der Instanz von Unit1 in der Unit1.cpp/Unit1.h

Damit solltest du dann Zugriff von Unit2 auf Unit1 haben.

Nun benötigst du noch Eigenschaften oder Methoden in der Unit1, die public sind, damit du von Unit2 aus die Berechtigung hast, darauf zuzugreifen.

In der class Unit1 musst du im public-Bereich Variablen oder Funktionen (letzteres ist sauberer) anlegen, die den entsprechenden Werten, die du ändern möchtest, zugeordnet sind:

Code:
// Sauberste Vorgehensweise

class Unit1
{
private:
    int WertNichtAendern;
    int WertAendern;

public:
    // Zugriffsmethoden für die Eigenschaft(en)
    void AendereWert(int neuerWert) { WertAendern = neuerWert; }
    int LeseWert() { return WertAendern; }

};

Auf diese Weise ist es dir nun möglich, von der Unit2-Instanz über das Objekt Hauptinstanz auf die Unit1-Instanz zuzugreifen.

Ich hoffe, das stimmt alles so und ist einigermaßen verständlich. Sollte es aber eigentlich.

Gruß, Hendrik
 
jccTeq hat gesagt.:
Code:
// Unit2.h
#include "Unit1.h"
 
extern Unit1 Hauptinstanz; // "Hauptinstanz" ist der Name der Instanz von Unit1 in der Unit1.cpp/Unit1.h
Äh sorry aber was ist mit der Hauptinstanz der Instanz von Unit1 gemeint.
Irgendwie verstehen wir das nicht! Tut einfach so als wären wir die absoluten Anfänger (was nicht weit von der Realität entfernd sein kann wenn ich das hier so lese).
 
Zurück