Помогите понять условие задания

224
21 ноября 2017, 23:54

Создать иерархию классов представляющих простое наследование. Базовый класс – строка символов (char *). Производный класс – методы, работающие с данными базового класса. Реализовать в производном классе метод – поиска и удаления самого короткого слова в строке базового класса

Где мне нужно искать и удалять слово? Я реализовал наследование, создается класс на основе базового. Я инициализировал базовый и производный. Теперь где мне нужно искать и удалять слово? В производном, в переменной производного, или в производном, в переменной базового? В задании написано: "в строке базового класса", мне нужно из производного произвести поиск и удаление в базовом, или это означает что я унаследовал переменную базового и теперь в производном должен это сделать в переменной производного?

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
class FirstClass {
    protected:
        char* str_value;
    public:
        //FirstClass() {}
        FirstClass(const char* value = ""):str_value(0) {
            set(value);
        }
        FirstClass(const FirstClass &obj):str_value(0) {
            set(obj.str_value);
        };
        ~FirstClass() {delete[] str_value;}
    void set(const char* value) {
        delete[] str_value;
        str_value = new char[strlen(value)+1];
        strcpy(str_value, value);
    }
    const char* get() const {
        return str_value;
    }
};
class SecondClass : public FirstClass {
    public:
        SecondClass(const char* str_value = "") : FirstClass (str_value) {}
    void findShortestWord()
    {
        str_value = "kokoko";
    }
 };
int main() {
    FirstClass F_object("aaaaaaaaaa");
    printf("\n%s", F_object.get());
    F_object.set("bbbbbbbbbb");
    printf("\n%s", F_object.get());
    FirstClass F_object2 = F_object;
    SecondClass S_object();
    printf("\n%s", F_object.get());
    return 0;
}
Answer 1

Теперь создаете метод

class SecondClass : public FirstClass 
{
public:
    SecondClass(const char* str_value = "") : FirstClass (str_value) {}
    void findShortestWord()
    {
      //здесь работаем с str_value
    }
};

И работаете на прямую с полем str_value.

Но это не очень хорошо. Лучше скрыть это поле в private и реализовать в базовом классе простейшие операции, например доступ по индексу, и так далее. А уже в производном классе можно реализовать более специфическую логику вроде поиска и удаления самого короткого слова. И методы производного класса будут использовать только функции базового.

READ ALSO
Проектирование контакт листа Qt

Проектирование контакт листа Qt

Нужно написать контакт лист для мессенджераДля этого пытаюсь правильно все спроектировать для удобной работы и простого расширения

233
Try to build app with qt ld errors, ljasper, lQt5PlatformSupport [требует правки]

Try to build app with qt ld errors, ljasper, lQt5PlatformSupport [требует правки]

I'm trying to compile a program, on windows with cmake, and get qt linker errors

241
Какие на данный момент есть методы скачивания файлов?

Какие на данный момент есть методы скачивания файлов?

Допустим, есть определённый набор файлов, от маленьких до больших (несколько ГБ)И есть много клиентов, у которых установлена наша программа...

181
Изменить язык программы

Изменить язык программы

Как изменить язык программы используя стандартные средства локализацииСоздал ресурс MyForm

182