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

Här diskuteras programmering och utveckling
Christian Holmberg
Inlägg: 194
Blev medlem: 02 nov 2006, 22:02
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

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

Inlägg 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;
}
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

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

Inlägg 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 {};
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

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

Inlägg 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
--
Per Erik Strandberg
Yet Another IT Consultant
Skriv svar

Återgå till "Programmering och webbdesign"