所以现在我有一个非常基本的类cnt设置。那是返回错误
错误:'Cnt'没有命名类型
对于cnt()和cnt(T t)。据我所知,这与我的教科书如何定义模板类是一致的,所以我在这里做错了什么?
cnt.h:
#ifndef CNT_H_
#define CNT_H_
#include <iostream>
template <typename T>
class Cnt
{
public:
Cnt();
Cnt(T t);
private:
T item;
int cnt;
};
#include "cnt.cpp"
#endif
cnt.cpp:
template<typename T>
Cnt<T>::Cnt()
{
cnt = 0;
}
template<typename T>
Cnt<T>::Cnt(T t)
{
item = t;
cnt = 0;
}
答案 0 :(得分:1)
在模板元编程中,您的声明和定义应该在与
相同的头文件中#ifndef CNT_H_
#define CNT_H_
#include <iostream>
template <typename T>
class Cnt
{
public:
Cnt();
Cnt(T t);
private:
T item;
int cnt;
};
template<typename T>
Cnt<T>::Cnt()
{
cnt = 0;
}
template<typename T>
Cnt<T>::Cnt(T t)
{
item = t;
cnt = 0;
}
答案 1 :(得分:0)
您可能在没有模板参数的情况下实例化Cnt
类。而不是说
Cnt c;
您需要提供类型,例如
Cnt<int> c;
此外,您必须内联定义您的功能,因此您应该有一个文件cnt.h
,而不是cnt.cpp
和cnt.hpp
,其中包含:
#ifndef CNT_H_
#define CNT_H_
#include <iostream>
template <typename T>
class Cnt
{
public:
Cnt() : cnt(0) { }
Cnt(T t) : item(t), cnt(0) { }
private:
T item;
int cnt;
};
#endif