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