Не выводятся на консоль поля классов, которые были унаследованы

В классе С3 мне нужно вывести массив строк, который является полем класс С2. Но этого почему-то не происходит, хотя наследование было сделано с помощью соответствующего синтаксиса. Так же пытался вывести на консоль поле класса С1 (строку), но так же ничего не получилось.

#include <iostream>
#include <Windows.h>
#include <iomanip>
#include <string>

using namespace std;

class C1
{
public:
    string myString;
    void inputString()
    {
        cout << "Укажіть рядок ";
        cin >> myString;
    }
    void outputString()
    {
        cout << myString << endl;
    }
};

class C2 : public C1
{
public:
    string *arrayStrings;
    int size;
    C2()
    {
        size = 5;
        arrayStrings = new string[size];
    }
    void inputArray()
    {
        cout << "Укажіть масив рядків ";
        for (int i = 0; i < size; i++)
        {
            cin >> arrayStrings[i];
        }
    }
    void outputArray()
    {
        for (int i = 0; i < size; i++)
        {
            cout << arrayStrings[i].c_str() << endl;
        }
    }
};

class C3 : public C2
{
private:
    int textColor;
    int backgroundColor;
    int width;
public:
    C3(int t, int b, int w)
    {
        textColor = t;
        backgroundColor = b;
        width = w;
    }

    void setColor()
    {
        HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(hStdOut, (WORD)(backgroundColor << 15) | textColor);
    }
    void outputArray()
    {
        for (int i = 0; i < size; i++)
        {
            cout << setw(width) << arrayStrings[i].c_str() << endl;
        }
    }
};

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    C1 a;
    a.inputString();
    a.outputString();
    C2 b;
    b.inputArray();
    b.outputArray();
    C3 c(14, 0, 15);
    c.setColor();   
    c.outputArray();
    return 0;
}

Помогите, пожалуйста?


Ответы (2 шт):

Автор решения: Igor
c.inputArray(); // <--
c.outputArray();

нужно один раз принять от пользователя данные. и два раза вывести: первый раз без ширины поля и там где ещё не изменён цвет текста

C3 c(14, 0, 15);
c.inputArray();
((C2)c).outputArray();
c.setColor();   
c.outputArray();
→ Ссылка
Автор решения: Harry

Наследование сделано, но вы же ничего не вводите в C3 - в конструкторах ввод не запрашивается, его у вас надо делать явно.

Напишите

C3 c(14, 0, 15);
c.setColor();   
c.inputArray();
c.outputArray();

и будет вам вывод...

→ Ссылка