Это школьное задание, призванное научить нас динамическому c связыванию. Я чувствую, что понимаю эти концепции достаточно хорошо, и раньше у меня не было проблем с реализацией привязки Dynami c, но по какой-то причине я не могу исправить эту ошибку.
Я использовал привязку Dynami c раньше в int main(){}
, но не использовал его в методе класса. Но он все равно должен работать, верно?
У меня есть информационный базовый класс, от которого происходит класс активности. от класса активности выводятся три класса активности: пешие прогулки, езда на велосипеде, ужин в ресторане.
Все эти классы были протестированы
class information
{
public:
information();
information(char *head, char *body);
information(const information &to_copy);
virtual ~information();
virtual void display();
protected:
char *title;
char *info;
};
class activity : public information
{
public:
activity();
activity(char *name, char *location);
activity(const activity &to_copy);
virtual ~activity();
void set_date(int date_of[3]);
void set_length(char *length_activity);
void set_ind(bool ind);
void display();
protected:
char *length;//1 hour, 1 day, half day, etc. length of activity
bool independent;//can the activity be done alone?
int date[3];//day month year
};
class hike : public activity
{
public:
hike();
hike(char *trail, char *notes);//notes: is it rocky, is it nice, is it sunny, or is there ice etc.
hike(const hike &to_hike);
~hike();
void set_km(float km);
void set_elevation(float km);
void display();
private:
float length_km;//metric system yo
float elevation_km;
};
class bike_ride : public activity
{
public:
bike_ride();
bike_ride(char *start_notes, char *end_notes);//what road are you starting on where are you going, what road will you use to get back home, or where is your destination etc.
bike_ride(const bike_ride &to_ride);
~bike_ride();
void set_hills(int num_hills);//how many hills are there?
void set_km(float km);
virtual void display();
private:
int hills;
float length_km;
};
class dinner_date : public activity
{
public:
dinner_date();
dinner_date(char *restaurant, char *company);//who are you eating dinner with
dinner_date(const dinner_date &to_dine);
~dinner_date();
void favorite_meals(char *fav_meals[3]);
void display();
private:
char *meals[3];//top 3 favorite things to eat from restaurant.
};
У меня также есть узел class, который содержит 3 указателя "информации" (базовый класс), которые затем преобразуются, чтобы указывать на различные объекты деятельности. 3 указателя базового класса. Я получаю ошибку компилятора: «Недопустимое использование нестатической c функции-члена».
void node::display()
{
for(int i = 0; i < 3; ++i)
{
events[i]->display();
}
}
Как я могу использовать RTTI для вызова определенной c функции отображения, необходимой для каждого базового класса ptr?