Jeg har prøvet begge dele men har ikke helt kunne få det til at virke. Jeg har sikkert heller ikke forklaret mig helt detaljeret nok. Vil selvfølgelig herne give flere point hvis det er muligt.
s1.function1() // Jeg kan ikke bruge funktionerne i klassen s1
Jeg ønsker altså at kunne bruge filen ekstra.cpp til at lave nogle instanser af klassen state samt herefter at kunne udnytte klassens funktioner( s1.funktion1()...). Dette skulle gerne køres via et kald fra main(). Klasserne s1,s2 skal herefter kunne bruges i resten af main samt underfunktioner.
Jeg har prøvet at refractorere koden i filen ekstra til en funktion som jeg kalder fra main() men s1,s2 optræder derved kun som lokale klasser og kan ikke bruges i resten af main().
Dit problem er nu et helt andet! I en klasse er alt private med mindre andet er angivet - og det vil sige de kun kan tilgås indefra din klasse, ikke fra kode der ligger udenfor.
For at kunne kalde dem udefra, skal de markeres som værende public - det gøres ved at skrive public foran returtypen. Det har altså intet at gøre med at du prøver at kalde kode i en anden fil - du havde heller ikke kunnet gøre det selvom du kun havde en enkelt CPP-fil.
Jeg gætter på du er ny indenfor programmering - og du har sikkert en bog du sidder med. Jeg vil i så fald foreslå du måske læser mere om teorien bag objekt-orienteret programmering - det kan være det giver mere mening efter det :)
class state { public: void function1(); void function2();
}; Det burde da være godt nok ik? Ellers vil du måske give et lille eksempel?
Jeg får flg fejlmeddelser:
ekstra.cpp: error C2143: syntax error : missing ';' before '.' error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C2371: 's1' : redefinition; different basic types see declaration of 's1'
Test1.cpp: warning C4822: 'wmain::state::function1' : local class member function does not have a body
ekstra.cpp: #include "stdafx.h" #include "test1.h state s1; state s2;
s1.function1() // Jeg kan ikke bruge funktionerne i klassen s1
Hvis jeg i stedet laver en funktion(init_s1()) og kalder den fra main virker s1.function1() i ekstra.cpp men objektet s1 forsvinder igen når init_s1 er afsluttet.
ekstra.cpp: #include "stdafx.h" #include "test1.h void init_s1(){ state s1; state s2; s1.function1(); // Nu kan jeg kalde funktionen i objektet uden problemer. }
Test1.cpp: #include "stdafx.h" #include "test1.h"
main{ .... .... init_s1(); // Virker fint s1.function1(); // objektet s1 kan ikke bruges i resten af main. cout << &s1; // }
Ok tak. Nu mangler jeg bare at kunne køre init_s1() fra main og bagefter udnytte s1 i resten af main() Test1.cpp: #include "stdafx.h" #include "test1.h"
main{ .... .... init_s1(); // Virker fint s1.function1(); // objektet s1 kan ikke bruges i resten af main. cout << &s1; // }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.