模板很新,我的教授教他们很糟糕,所以我试着自己学习。看了几个视频,我似乎无法理解我做错了什么。当我取出模板时,我的整个代码会编译,但只要我添加代码
//将所有以前的int替换为T
template <typename T>
class Checks
{
public:
int ispair(vector<T> dvalues);
int flush(Vector<T> dsuits);
int straight(vector<T> dvalues);
int threeofakind(vector<T> dvalues);
int fourofakind(vector<T> dvalues);
int fullhouse(vector<T> dvalues);
Checks(); //didn't include all of header since there's a lot more want to save room
}
当我这样做时,在我有0之前,我得到了一堆错误(58)。当我尝试在另一个.cpp中使用我的Checks类时:
Checks ck1;
Checks ck2; //this would be in another class
我收到此错误:检查没有适当的默认构造函数可用。
显然,我在做模板的方式,建议或帮助方面做错了什么?
答案 0 :(得分:3)
只是因为我不精通CPP,但是在定义变量时,你需要指定类的类型:
Checks<int> ck1;
答案 1 :(得分:1)
你有3个问题
你没有用}关闭你的班级;
#include <vector>
template <typename T>
class Checks {
public:
int ispair(std::vector<T> dvalues);
int flush(std::vector<T> dsuits); //was Vector
int straight(std::vector<T> dvalues);
int threeofakind(std::vector<T> dvalues);
int fourofakind(std::vector<T> dvalues);
int fullhouse(std::vector<T> dvalues);
}; //didn'T close the class with };
** 编辑 **
int main(int argc, char** argv) {
Checks<int> check;
std::vector<int> v;
check.ispair(v);
return EXIT_SUCCESS;
}
Check.h
#include <vector>
template <typename T>
class Checks {
public:
int ispair(std::vector<T> dvalues);
};
template<class T>
int Checks<T>::ispair(std::vector<T> dvalues) {
return 0;
}