![](/img/trans.png)
[英]How to forward an argument to a template member function to a member base class pointer in C++
[英]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.