Dies könnte mir ein dummes Problem sein. Aber ich bekomme das konzeptionelle Problem nicht im Programm.Conceptual Verwirrung
Ich mag aus verschiedenen Teilen des Projektes nur den Zeiger der Klasse Kind in einer globalen Funktion und Zugriff, den Zeiger Objekt zu übergeben, indem Child.h
Problem: das folgende Problem nicht funktioniert wenn ich get_Child() -> number_1 im Hauptteil mache.
Lösung: wenn ich den Child.cpp im Haupt umfassen und Inline den Constructor oder wenn ich den Konstruktor in dem Child.h statt Child.cpp
Query-Anfrage erklären. Was ist der Grund für dieses Verhalten? Eine Art und Weise, wie ich den Konstruktor in Child.cpp erklären kann und muss nicht Child.cpp in der main.cpp
main.cpp
#include <iostream>
#include "Child.h"
//#include "Child.cpp"
using namespace std;
int main(){
Child *pC = new Child();
cout << "direct = " << pC->number_1 << endl;
cout << "with function = " << get_Child()->number_1 << endl;
}
Child.h
#ifndef CHILD_H_
#define CHILD_H_
class Child;
static Child * pointer_Child;
inline void save_Child(Child * p_C){
pointer_Child = p_C;
}
inline Child * get_Child(){
return pointer_Child;
}
class Child {
public:
Child();
//Child(){
// this ->set_Child();
//}
void set_Child(){
save_Child(this);
}
int number_1 = 10;
};
#endif /* CHILD_H_ */
umfassen
Child.cpp
#include "Child.h"
//inline Child::Child(){
// this ->set_Child();
//}
Child::Child(){
this->set_Child();
}
Verwenden Sie einen Linker. Ich kann mir kein Anfänger-C++ - Buch vorstellen, das nicht mit der Beschreibung der drei Teile des Programmaufbaus beginnt: Präprozessor, Compiler, Linker. –