C++模板,函数在类中定义

C++ Template, Functions define in a class?

本文关键字:定义 函数 模板 C++      更新时间:2023-10-16

class.h

template<class T>
  struct AStruct
  {
     //stuff
  };
class aClass
{
  template<class T>
  void setStruct(const AStruct<T>& s)
  {
    theStruct = s; 
  }
private:
  template<class T>
  AStruct<T> theStruct;  //this is not liked.  "multiple template parameter lists are not allowed" are one of the errors I get... 
}; 

这真是一团糟,但我还是想知道该怎么办……我试过玩一玩,但没有运气。。。另外,请只使用标准库!

template<class T>
struct AStruct{
};
template<class T>         //<-- the template must be here
class aClass {
public:
    void setStruct(const AStruct<T>& s){
         theStruct = s; 
    }
private:
    AStruct<T> theStruct; //<-- To construct this variable
};

如果您持有的成员是类模板,那么您要么需要一个类模板,要么需要为模板参数提供一个类型。似乎你需要前者:

template<class T>
class aClass
{
  void setStruct(const AStruct<T>& s){
   theStruct = s; 
  }
private:
  AStruct<T> theStruct; // data member is class template
}; 

移除template<class T>

template<class T>
struct AStruct{
 //stuff
};
template<class T>
class aClass{
 void setStruct(const AStruct<T>& s){
  theStruct = s; 
}
private:
AStruct<T> theStruct;   
}; 

您已经将AStruct定义为模板