[英]C++, Constructor with istream on a derivate class
我對派生類有問題,派生類的構造函數的參數為istream。
Reference.cpp _
....
Reference::Reference(istream& p_is)
{...}
....
Livre.h _
class Livre : public Reference
{
private:
void verifieInvariant() const;
std::string m_editeur;
std::string m_isbn;
public:
Livre(
const std::string& p_cote,
const std::string& p_theme,
const std::string& p_titre,
const std::string& p_auteurs,
int p_anneeEdition,
const util::Date& p_dateAcquisition,
const std::string& p_editeur,
const std::string& p_isbn);
Livre(std::istream& p_is);
...
Livre.cpp
....
Livre::Livre(std::istream& p_is)
{
Reference(std::istream& p_is);
string editeur ="";
string isbn = "";
string buffer = "";
getline(p_is, buffer);
getline(p_is, editeur);
getline(p_is, isbn);
m_editeur = editeur;
m_isbn = isbn;
}
好的,所以我的問題很簡單。 編譯器不允許我使用istream
為派生類Livre創建另一個構造函數。 我的Reference類是一個抽象類,我需要在構造函數Livre中調用帶有Reference流的構造函數以完成信息。 我還有另一個選擇是像
Reference::Reference(std::istream& p_is)
{...}
進入我的Livre.cpp。 因此,如果有人可以向我解釋更好的方法,我將非常感激。 我知道我有很多代碼,但是要解釋這個問題並不容易。 多謝你們。
我不確定是否是問題所在,但我認為正確的方法是重寫
Livre::Livre(std::istream& p_is)
{
Reference(std::istream& p_is);
/* ... */
}
如
Livre::Livre(std::istream& p_is) : Reference(p_is);
{
/* ... */
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.