Почему, когда я печатаю в суперклассе и расширяю эту функцию в производном классе, он не показывает специфицированный атрибут c в C ++? - PullRequest
0 голосов
/ 03 мая 2020

У меня есть этот класс с этим перечислением:

class Artifact{
public:
    enum class artifactType{vase,jewelry,partialRelic,unknown};
...

В этом классе я сделал эту функцию печати:

 void print(std::ostream& os){
        os<<"discoveryDate_:"<<discoveryDate_<<"-"<<"estimatedDateOfOrigin_:"<<estimatedDateOfOrigin_<<"-"<<"Enum that i dont know how to print:"<<"-----";
    }

Прежде всего, я не знаю, как напечатать это enum и second, у меня есть 2 производных класса, которые наследуют этот класс:

class GreekArtifact : public Artifact{
private:
    std::string nameOfGod_; //specific attribute 
}

, и эта печать не работает

 void print(std::ostream& os) {
        Artifact::print(os);
        os <<" God:"<<nameOfGod_;
    }

У меня нет ошибки, но она просто не показывает nameOfGod потому что в основном я создал список артефактов, и когда я печатаю, он показывает, что находится в печати класса Artifact, а не в атрибуте speci c. Я перегружен оператор << </p>

std::ostream& operator<<(std::ostream& os,const std::list<Artifact>& b){
    for(auto it : b){
        it.print(os);
        os<<"\n";
    }
    return os;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...