将继承的模板结构作为函数参数传递

时间:2015-07-15 06:59:53

标签: c++ struct

我在MyStruct中有一个模板结构Template.h。 我想将MyStruct作为参数传递给另一个头文件header.h中的函数。有点像这样:

 //Template.h
template <class T1, class T2>
struct MyStruct{
  int myInt;
  unordered_map<pair<T1, T1>, T2>;
};

现在我想将这个结构放在我的类中的一个函数中:

//header.h
#include "template.h"
class MyClass {
  public:
    MyClass();
    virtual ~MyClass();
    void myFunction(int, MyStruct myStruct);
  private:
    int myValue;
};

我还想在第三个文件myFunction中调用myCpp.cpp,其头文件myCpp.h有一个名为std::shared_ptr<MyClass> sharedPtr;的共享指针 在myCpp.cpp,我致电:

sharedPtr->myFunction(int, myStruct);

上面的函数返回myStruct。 所以,我的问题是,如何使这项工作?我试图在header.h中再次添加定义结构,但它显示:原型for ...与类中的任何内容都不匹配。

2 个答案:

答案 0 :(得分:0)

使您的成员函数class MyClass { public: MyClass(); virtual ~MyClass(); template <class T1, class T2> void myFunction(int, MyStruct<T1, T2> myStruct); private: int myValue; }; 成为模板成员函数:

pcl::PointCloud<pcl::PointXYZL>

答案 1 :(得分:0)

您忘记在MyStruct参数中添加模板参数。 请改为MyStruct<type1 type2> myStruct。你很高兴。