C++/ubuntu - 模板错误

c++/ubuntu - templates error

本文关键字:错误 ubuntu C++      更新时间:2023-10-16

我有以下代码:文件.h:

#ifndef __ANA_H__
#define __ANA_H__
template <class T>
class ana {
class ana1{//code
          }*anna1;
  public: 
    bool method(T& data,ana::ana1 &a);
};
#endif

文件.cpp:

#include <ana.h>
#include <iostream>
using namespace std;
template <class T>
bool ana<T>::method(T& data,ana::ana1 &t) {
  cout << "Data = " << data << endl;
  if(data > 0) {
    return true;
  }
  return false;
}

我有错误:ana::ana1 is not a type.如何解决此错误?我错在哪里?需要一些帮助。我在 Ubuntu 工作,我使用 G++ 编译代码。我从我发布的 .h 和.cpp创建一个 .a。

// (declaration):
bool method(T& data, ana1& t);

// (definition):
bool ana<T>::method(T& data, typename ana<T>::ana1& t) {

使用模板,您应该将声明和定义放入同一个文件中。在您的情况下,这可能如下所示:

#ifndef __ANA_H__
#define __ANA_H__
template <class T>
class ana {
class ana1{//code
          }*anna1;
  public: 
    bool method(T& data,ana1 &a) {
        cout << "Data = " << data << endl;
        if(data > 0) {
            return true;
        }
        return false;
    }
};
#endif
相关文章: