【发布时间】:2023-10-01 21:41:01
【问题描述】:
错误是:
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
【问题讨论】:
-
是什么导致了错误?这里没有代码可以做到这一点。
-
您只能从父对象的后代访问父对象的受保护方法。这里,oActivity 不是新创建对象的父对象,因此无法访问其受保护的成员。
-
或者它可能是 this question 的副本。无论如何,它是重复的。
-
谢谢,这是重复的。我道歉
标签: c++ inheritance protected access-specifier