错误:构造函数未命名类型



所以现在我设置了一个非常基本的类cnt。 即返回错误

错误:"Cnt"未命名类型

对于 cnt() 和 cnt(T t)。 据我所知,这与我的教科书定义模板类的方式一致,那么我在这里做错了什么?

中新社:

#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;
}

在模板元编程中,您的声明和定义应与

#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;
}

您可能在没有模板参数的情况下实例化Cnt类。 而不是说

Cnt c;

您需要提供一个类型,例如

Cnt<int> c;

此外,您必须内联定义函数,因此您应该有一个包含以下内容的文件cnt.hpp,而不是cnt.hcnt.cpp

#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

最新更新