C++ 使用personalize类生成personalize堆栈,但出现错误
嗨,我想用模板创建我的个人堆栈类 并与个人类进行堆栈C++ 使用personalize类生成personalize堆栈,但出现错误,c++,C++,嗨,我想用模板创建我的个人堆栈类 并与个人类进行堆栈 template <class T> class stack{ public: stack(T); ~stack(); void insert(T); T pop(); void printstack(); private: int top; int capacity; T *list; }; template <class T> stack<T&
template <class T>
class stack{
public:
stack(T);
~stack();
void insert(T);
T pop();
void printstack();
private:
int top;
int capacity;
T *list;
};
template <class T>
stack<T>::stack(T first){
top=0;
capacity=10;
list = new T[capacity];
memset(cards, 0, sizeof(T)*10);
list[0]=first;
}
模板
类堆栈{
公众:
堆栈(T);
~stack();
空白插入(T);
T pop();
void printstack();
私人:
int top;
国际能力;
T*列表;
};
模板
堆栈::堆栈(T优先){
top=0;
容量=10;
列表=新T[容量];
内存集(卡,0,大小为(T)*10);
列表[0]=第一个;
}
我想用卡片方法做一个堆栈
class node{
public:
node(int i=0,int j=0);
~node();
private:
int node_num;
int nodenum;
};
class list{
public:
list();
~list();
private:
stack<node> nodelist;
};
list::list(){
stack<node> nodelist(node(1,1));
}
类节点{
公众:
节点(inti=0,intj=0);
~node();
私人:
int node_num;
int nodenum;
};
班级名单{
公众:
list();
~list();
私人:
堆栈节点列表;
};
列表::列表(){
堆栈节点列表(节点(1,1));
}
但是当我运行代码时,就会出现错误
“deck”的构造函数必须显式初始化没有默认构造函数的成员“decklist”
使用stack deck1(1)时效果良好;有什么问题吗
谢谢你的阅读。这是你写的
deck::deck(){
stack<card> decklist(card(1,1));
}
错误是关于类
deck
,但您尚未显示该类。我知道怎么了,但我不想猜。请将deck
类添加到发布的代码中。memset(卡片,0,sizeof(T)*10)代码>破坏卡数组中的所有对象。我猜是堆栈decklist(卡(1,1))代码>此行旨在初始化成员变量decklist(我猜是因为您没有显示deck类),但这是初始化同名的局部变量,您应该使用初始值设定项列表。很抱歉,这是我第一次发布问题。使用cards=new T[capacity]
您已经为调用默认构造函数的卡创建了容量实例,这肯定不是您想要做的。如前所述,在像card
这样的非POD对象上使用memset
会导致未定义的行为@ㅣ기범 别担心,我见过更糟的情况,你确实解决了。
deck::deck() : decklist(card(1,1)) {
}