我对C ++很陌生,正在尝试创建一个" Generic Class"可以接受任何输入。
我需要一种方法来存储我的类在Array或Vector中接收的任何输入。然而,我正在努力弄清楚如何做到这一点。
我试图在我的.cpp文件中执行此操作:
template<typename T> T data[5];
template<typename T> vector<T> vect;
这是我的Header文件的样子:
#include <vector>
using namespace std;
template <class T> class Stack {
public:
void push(T x);
T peek();
T pop();
int size();
bool contains();
private:
vector<T> data;
};
但这显然不起作用,我理解我正在做的事情是不可能的?我怎样才能创建一个可以存储我班级收到的数组或数据?
我对此很陌生,所以为愚蠢的错误或误解道歉。
答案 0 :(得分:2)
试试这个。我在这里使用>> git rev-list HEAD | wc -l
1730
来存储数据。将其存储在vector
文件中并编译并执行。
你有那些功能声明。您将在此处获得功能主体。
.cpp
输出
#include<iostream>
#include<vector>
using namespace std;
template <class T>
class Stack{
private:
vector<T> elems;
public:
void push(T);
T pop();
T peek();
};
template<class T>
void Stack<T>:: push(T obj){
elems.push_back(obj);
}
template<class T>
T Stack<T>::pop(){
if(!elems.empty()){
T temp = elems.back();
elems.pop_back();
return temp;
}
}
template<class T>
T Stack<T>::peek(){
if(!elems.empty())
return elems.back();
}
int main(){
Stack<float> S;
S.push(5.42);
S.push(3.123);
S.push(7.1);
cout << S.pop() << endl;
S.pop();
cout << S.peek() << endl;
return 0;
}