簡體   English   中英

C ++,派生類上帶有istream的構造方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM