如何在构建对象堆栈时解决转换错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在构建对象堆栈时解决转换错误?相关的知识,希望对你有一定的参考价值。

您好我最近开始使用类,我正在尝试构建一堆对象。我创建了类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;
};
答案

您的成员变量的类型为T vett,而您指定的类型为T[dim](相当于T*;

将您的成员变量定义更改为

T* vett;

它应该工作。

顺便说一句:使用typedef来定义一个众所周知的类型的指针通常会使程序的可读性降低,错误消息也不那么全面。

所以我建议写

Oggetto **vett;

vett = new Oggetto*[dim]

以上是关于如何在构建对象堆栈时解决转换错误?的主要内容,如果未能解决你的问题,请参考以下文章

来自后台堆栈的片段 onResume

添加到后台堆栈时如何保持片段状态?

添加到后台堆栈时如何维护片段状态?

如何解决 Azure DevOps 中的“堆栈跟踪错误”

错误:这个片段内部类应该是静态的 [ValidFragment]

导航到Android中的另一个片段后如何清除导航堆栈