Ошибка вывода из таблицы - PullRequest
       1

Ошибка вывода из таблицы

0 голосов
/ 19 февраля 2012

Пожалуйста, запустите этот код и объясните мне, почему вывод выглядит так:

table[0]=3
table[1]=-858993567
table[2]=4
#include "stdafx.h"
struct First
{
    long data;
};

struct Second : public First
{
    char marker;
};

void printTable(First *table, int length)
{
    for (int i=0; i < length; ++i)
    {
        printf("table[%d]=%ld\n", i, table[i].data);
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    Second myTable[3];
    myTable[0].marker='a';
    myTable[1].marker='b';
    myTable[2].marker='c';

    myTable[0].data=3;
    myTable[1].data=4;
    myTable[2].data=5;

    printTable(myTable, 3);
    return 0;
}

Кто-нибудь может мне помочь?

1 Ответ

2 голосов
/ 19 февраля 2012

Функция ожидает массив First, но вы передаете массив Second. Это просто не работает.

Вы можете использовать указатель на базовый класс для передачи одного производного объекта, но не массивов. Оператору индексирования [] необходимо знать точный тип объектов, чтобы можно было рассчитать, где они находятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...