2013-02-24 79 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) – 2013-02-24 09:21:41

+0

我不完全明白這個問題,但是,是的,類似的工作很好。正如你所描述的,你可以有一個「助手」類生成第三類。請注意,您必須像這樣啓動personFactory,否則將其設爲靜態函數。 – SinisterMJ 2013-02-24 09:21:46

+0

阻止你實際創建'Person :: Person(ifstream&)'構造函數的原因是什麼?另外,使用'unique_ptr'。 – 2013-02-24 10:09:23

回答

1

我認爲,如果你的電話看起來像

personFactory::getPersonFromFile(file) 

你需要有它的靜態

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

另外不要忘記,因爲你將返回一個指向人的指針,你必須用「新」來創建它。否則對象將超出作用域,並且指針指向內存 – 2013-02-24 09:29:16

+0

中的一個被銷燬的對象,如果我將使用: 靜態Person * getPersonFromFile(ifstream&inFile)const; 它不會正確嗎? (因爲Person不是const?)。 – YkI 2013-02-24 10:23:57