Sida 1 av 1

C++: Vill deklarera klasser i "onarturlig föld"?

Postat: 18 nov 2011, 02:15
av Christian Holmberg
Har två små problem jag behöver hjälp med. Det första problemet är att komma på lämpligt ämne/subject för detta inlägg. ;D

Det andra är att jag vill kunna skriva kod i stil med:

Kod: Markera allt

#include <iostream>

using namespace std;

class A {
	public:
		void DoSomething() {
			test.DoSomething();
		}
	B test;
};

class B {
	public:	
		void DoSomething() {
			cout << "Hello from B" << endl;
		}
};

int main () {
	A tmp;
	tmp.DoSomething();
	return 0;
}
Ovanståeden kod ger i gcc felmedelandena:
terminalen säger följande skrev:main.cpp:11:2: fel: "B" är inte namnet på en typ
main.cpp: I medlemsfunktion "void A::DoSomething()":
main.cpp:8:4: fel: "test" deklarerades inte i detta definitionsområde
Om man deklarerar klassen B före A så går koden att kompilera, men det går ej att tillämpa den tekniken på det projekt jag (försöker att) jobbar på.

Kod: Markera allt

#include <iostream>

using namespace std;

class B {
	public:	
		void DoSomething() {
			cout << "Hello from B" << endl;
		}
};

class A {
	public:
		void DoSomething() {
			test.DoSomething();
		}
	B test;
};

int main () {
	A tmp;
	tmp.DoSomething();
	return 0;
}

Re: C++: Vill deklarera klasser i "onarturlig föld"?

Postat: 18 nov 2011, 11:36
av mcNisse
Testa att deklarera klass B innan A. Sedan implementerar B efteråt.
Ungefär så här har jag sett kod (skriver på telefon, så jag orkar inte skriva detaljer)

Kod: Markera allt

class B; 
class A {};
class B {};

Re: C++: Vill deklarera klasser i "onarturlig föld"?

Postat: 19 nov 2011, 14:05
av per9000
Du borde nog ta en titt på en h-fil?
Header files commonly contain forward declarations of classes, subroutines, variables, and other identifiers.
/Per