繁体   English   中英

如何在 c++ 的 class 的成员 function 中传递带有模板变量的结构作为参数?

[英]How to pass structure with template variable as an argument inside member function of class in c++?

我想将“带有模板变量的结构”作为参数传递给 class 的成员 function。 我收到错误“没有匹配的 function 可供调用”。 谁能帮我? 我在声明/定义/从主传递参数时犯了一些错误。

template <typename T>
struct msg_1{
   int var_1;
   int var_2;
   T *var_3;
};

template<typename T>
struct msg_2{
    int var_1;
    int var_2;
    T *var_3;
};

class A
{
 public:
  int a;
  int b;

  template <typename T>
  void test(T *, T *);
 };

 template <typename T>
 void A::test(T *t1, T *t2)
 {      cout<<"Inside test @todo Do something"; }

int main()
{
 A ob;
 ob.a=10;
 ob.b=20;

 msg_1<int> *ob_1 = new msg_1<int>;
 msg_2<int> *ob_2 = new msg_2<int>;

 ob.test(ob_1,ob_2);

 return 0;
}

您的模板 function A::test仅使用一种类型T进行模板化,并且要求两个参数具有相同的类型T* 在您的示例中,您传递不同的参数: msg_1<int> *msg_2<int> *

如果你真的希望test只接受两个相同类型的参数,那么你t pass ob_1 and ob_2 . If you want . If you want测试to accept two parameters of different type, then you can change your class A and function A::test` 如下。

class A
{
public:
  int a;
  int b;

  template <typename T1, typename T2>
  void test(T1 *, T2 *);
};

template <typename T1, typename T2>
void A::test(T1 *t1, T2 *t2)
{ cout<<"Inside test @todo Do something"; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM