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)) {
}