이것은 나에게는 어리석은 문제 일 수 있습니다. 그러나 나는 프로그램에서 개념적 문제를 얻지 못하고있다. 다음과 같은 문제가 작동하지 않습니다개념적 혼란
내가 전역 함수 및 액세스에 클래스 아동의 포인터를 전달하려는 그 프로젝트의 다른 부분에서 포인터 객체 단지 Child.h가
문제를 포함하여 주에서 get_Child() -> number_1 할 때.
해결 방법 : I 메인에 Child.cpp을 포함하고, 나는 Child.h에서 생성자를 선언하는 대신 Child.cpp
의쿼리 요청하면 생성자 또는 인라인합니다. 이 행동의 이유는 무엇입니까? 내가 Child.cpp의 생성자를 선언 할 수 있고, MAIN.CPP에
#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_ */
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을 Child.cpp을 포함하지 않는 방법하는 방법입니다
Child.cpp
#include "Child.h"
//inline Child::Child(){
// this ->set_Child();
//}
Child::Child(){
this->set_Child();
}
링커를 사용하십시오. 나는 프로그램 작성의 세 부분을 설명하는 것으로 시작하지 않는 초보자 C++ 책을 생각할 수 없다 : 전처리 기, 컴파일러, 링커. –