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

时间:2013-09-19 04:36:25

标签: c++

所以现在我有一个非常基本的类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;
}

2 个答案:

答案 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.cppcnt.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