Как решить ошибку преобразования при построении стека объектов? - PullRequest
0 голосов
/ 14 сентября 2018

Здравствуйте, я недавно начал использовать классы и пытаюсь собрать стек объектов. Я создал класс Oggetto, который имеет переменную int и две переменные char * (и основные функции, такие как get / set), и мне нужно использовать динамический массив для построения стека.

Это заголовочный файл для стека, но я получаю эту ошибку:

[Error] cannot convert 'Oggetto**' to 'T {aka Oggetto*}' in assignment.

В чем проблема и как я могу ее решить?

#include "Oggetto.h"

typedef Oggetto *T;

class Pila
{       

    public:
        Pila():dim(10),riemp(0){ vett =new T[dim];}
        Pila(int d){dim=d; riemp=0; vett=new T[dim];}
        void push(T);
        void pop(T&);
        bool full();
        bool empty();
        ~Pila() {delete []vett;}
        void stampa();
    protected:

        int dim;
        T vett;
        int riemp;
};

1 Ответ

0 голосов
/ 14 сентября 2018

Ваша переменная-член имеет тип T vett, тогда как вы присваиваете значение типа T[dim] (что эквивалентно T*;

Измените определение переменной члена на

T* vett;

и это должно работать.

Кстати: использование typedef только для определения указателя на общеизвестный тип обычно делает программу менее читаемой, а сообщения об ошибках - менее полными.

Так что я 'буду предлагать написать

Oggetto **vett;

и

vett = new Oggetto*[dim]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...