Use*_*261 0 c++ stack templates
我试图编写一个使用节点来存储数据的堆栈,我试图将它与模板一起使用,以便存储的数据可以是不同的数据类型.我正在使用它与堆栈,所以节点可以移动或删除但是我已经初始化堆栈,我试图通过couting文本接收反馈,以确保一切正常,但事实并非如此.
没有反馈将返回到模板,并且Visual Studios 2013中没有错误.如果有人可以看一看并解释为什么那会很棒.此外,如果有人有更多关于使用"通用编程"的信息,以允许多种数据类型,这将是非常有用的.下面是分为两个标题和一个主要cpp的代码.
template <class T>
class Node {
public:
T data;
Node * next;
Node * start;
Node(T inputdata){
data = inputdata;
}
T getData() {
return data;
}
};
#include "node.h"
using namespace std;
template<typename DT>
class Stack{
private:
int size;
Node<DT> *top;
Node<DT> *s_ptr;
public:
Stack();
void push(DT val);
DT pop();
void start();
};
template<typename DT>
Stack<DT>::Stack()
{
cout << "Stack Started" << endl;
}
template<typename DT>
void Stack<DT>::push(DT val)
{
}
template<typename DT>
DT Stack<DT>::pop()
{
}
template<typename DT>
void Stack<DT>::start()
{
cout << "Started" << endl;
}
#include "stdafx.h"
#include <iostream>
#include "stack.h"
template <typename DT>
void start(){
Stack<DT> * stack = new Stack<DT>();
stack->start();
}
int _tmain(int argc, _TCHAR* argv[])
{
void start();
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为它之所以没有初始化的原因是因为在主类中它表示void应该只是start()时在main中开始.但是,如果我删除,我得到没有功能模板启动的实例匹配模板列表.有人在意解释?
我认为它之所以没有初始化的原因是因为在主类中它表示void应该只是start()时在main中开始.
正确.void start();它不调用函数,它声明了一个函数,所以你所做的就是声明一些东西,而不是运行任何代码.
但是,如果我删除,我得到没有功能模板启动的实例匹配模板列表.
您声明start为采用单个模板参数的函数模板,因此start()不是函数,而是模板.编译器应该如何知道模板参数应该是什么?
你需要做一些事情:
start<int>();
Run Code Online (Sandbox Code Playgroud)