Ошибки:не удается получить доступ к защищенному члену класса в производном классе
d_start
является защищенным членомCourseActivity
duration
является защищенным членомCourseActivity
location
является защищенным членомCourseActivity
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
Возможный дубликат [access protected inherited member с указателем на базовый класс] (http://stackoverflow.com/questions/15969658/access-protected-inherited-member-with-pointer-to-base-class) – dyp
Что вызывает ошибку? Здесь нет кода, который бы это сделал. –
Доступ к защищенным методам родительского объекта можно получить только от объекта, который сходит с этого родителя. Здесь oActivity не является родителем только что созданного объекта, поэтому его защищенные члены не могут быть доступны. – Ashalynd