2013-02-24 3 views
0

저는이 메인 코드를 가지고 있습니다 : (코드의 일부).클래스와 포인터를 C++로 정의하십시오

int main() 
{ 
Person* pPerson; 
ifstream file ("data.dat", ios::binary); 
pPerson = personFactory::getPersonFromFile(file); 
... 
} 

다음과 같은 호출을 정의 할 수 있습니까? (클래스의 일부).

class personFactory{ 
public: 
... 
Person* getPersonFromFile (ifstream& inFile); 
... 
}; 
+2

"나는 전화를 정의 할 수 ...?"생각 - [WAT?] (https://www.destroyallsoftware.com/talks/wat) –

+0

나는 정확하게 질문을 이해하지 못하지만, 그렇습니다. 설명 된대로 세 번째 클래스를 생성하는 "Helper"클래스를 가질 수 있습니다. 당신은 personFactory를 초기화해야한다. 그렇지 않으면 정적 함수로 만들어야한다. – SinisterMJ

+0

'Person :: Person (ifstream &)'생성자를 실제로 만들지 못하게하는 이유는 무엇입니까? 또한,'unique_ptr'을 사용하십시오. –

답변

1

나는 당신이 필요

personFactory::getPersonFromFile(file) 

처럼 호출이 보이는 경우가 정적

static Person* getPersonFromFile (ifstream& inFile); 
+0

또한 "new"로 작성해야하는 사람에게 포인터를 반환하므로 잊지 마십시오. 그렇지 않으면 Object가 범위를 벗어나서 포인터가 메모리 내의 파괴 된 객체를 가리키고 –

+0

만약 내가 사용한다면 : 정적 Person * getPersonFromFile (ifstream & inFile) const; 오른쪽으로 흔들리지 않습니까? (사람이 const가 아니기 때문에?). – YkI

관련 문제