Вы создали переменные-члены public
, но это неправильный подход для OOP
, правильный - иметь их под спецификатором частного доступа и использовать сеттеры и геттеры.
Теперь, чтобы ваши ошибки:
Вы используете void
для main
, но с С ++ вы можете использовать только int
для него.
Вы используйте std::string
в качестве аргумента для printf
, но он не может его принять. (Я передал c_string
из std::string
, чтобы исправить это).
Вы используете объект из родительского класса и даете ему имя, а затем используете другой объект из ведомый, чтобы напечатать имя первого. (Я использовал только один)
#include <iostream>
#include <string>
class Person{
public:
std::string name;
};
class Printer: public Person{
public:
void print(){
printf("%s",this-> name.c_str());
}
};
int main() {
Printer printer;
printer.name = "name";
printer.print();
}
После ваших комментариев я обновил класс Printer
, чтобы выполнить ваше намерение
#include <iostream>
#include <string>
class Person{
public:
std::string name;
};
class Printer{
public:
void print(const Person& person ){
printf("%s", person.name.c_str());
}
};
int main() {
Person one;
one.name = "name";
Printer printer;
printer.print(one);
}