Les erreurs sont les suivantes:Impossible d'accéder membre de classe protégée dans une classe dérivée
d_start
est membre protégé deCourseActivity
duration
est membre protégé deCourseActivity
location
est membre protégé deCourseActivity
class CourseActivity{
protected:
StartTime* d_start;
double duration;
std::string location;
public:
CourseActivity() = default;
CourseActivity(const StartTime* _start, double _duration,
const std::string_location);
void reschedule(StartTime* _newStart);
void print() const;
};
class Lecture: public CourseActivity{
std::string topic;
bool deflt = false; //indicate which constructor was used.
//false = 1st. true = 2nd
public:
Lecture(const StartTime* _start, double _duration,
const std::string location, const std::string& _topic);
Lecture(const CourseActivity& _oActivity, const std::string& topic);
void print();
};
// ERROR
Lecture::Lecture(const CourseActivity& _oActivity, const std::string& _topic)
: CourseActivity(_oActivity.d_start,_oActivity.duration,_oActivity.location){
topic = _topic;
deflt = true;
}
// ERROR
duplication possible de [accès protégé membre hérité avec pointeur vers la classe de base] (http://stackoverflow.com/questions/15969658/access-protected-inherited-member-with-pointer-to-base-class) – dyp
provoque l'erreur? Il n'y a pas de code ici qui ferait ça. –
Vous pouvez uniquement accéder aux méthodes protégées du parent à partir d'un objet descendant de ce parent. Ici, oActivity n'est pas un parent de l'objet nouvellement créé, par conséquent ses membres protégés ne sont pas accessibles. – Ashalynd