模板函数参数有什么问题
what is wrong with the template function parameter
嗨,我是模板新手。只是想知道如何正确编译程序。
template<class t>
class node{
public:
t val;
node(t v):val(v){}
};
template<class t>
class stack{
private:
stack *next;
static stack *head;
static int top;
public:
void push(node *n);
node* pop();
};
template<class t>
int stack<t>::top=0;
template<class t>
stack<t>* stack<t>::head=NULL;
template<class t>
void stack<t>::push(node<t>* n) //Error the push function is not defined properly
{
}
int main(int argc, char *argv[])
{
node<int> n1(5);
return 0;
}
程序给出错误
stack<t>::push' : redefinition; different basic types
nw.cpp(14) : see declaration of 'stack<t>::push'
提前感谢
类模板node
需要模板参数
在以下位置使用node<t>
:
CCD_ 3和CCD_
声明:
void push(node *n);
应该是:
void push(node<t> *n);
public: void push(node *n);
应该是
public: void push(node<t> *n);
node
是一个类模板,因此即使在声明中也需要它的模板参数:
void push(node<n> *n);
node<t>* pop();
唯一可以在参数声明中省略模板参数的情况是当声明出现在类作用域本身中时。在这种情况下,node
被称为注入的类名。
此外,正如注释所指出的,head
和top
不应该是静态数据成员。这会抑制独立堆栈实例的创建,并且在使用它们时可能会造成很多混乱。相反,让它们成为非静态数据成员,这样它们就只引用正在使用的实例。
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了