gpt4 book ai didi

c++ - 无法将模板化函数显式实例化为模板化类

转载 作者:行者123 更新时间:2023-11-30 02:48:58 25 4
gpt4 key购买 nike

我不明白为什么下面的代码不起作用,为什么我不能显式实例化模板函数?如果我删除那个 < int > 我会得到一个“没有匹配的函数调用”

#include <iostream>
using namespace std;

template <typename T>
class Xclass
{
public:
template <typename Y>
void xfunc()
{
cout << "Hello";
}
};

template<typename T2>
class Z
{
public:
void x2()
{
Xclass<T2> obj;
obj.xfunc<int>();
}
};

int main() {

Z<int> obj;

obj.x2();

return 0;
}

错误是:

prog.cpp: In member function ‘void Z<T2>::x2()’:
prog.cpp:24:15: error: expected primary-expression before ‘int’
obj.xfunc<int>();
^
prog.cpp:24:15: error: expected ‘;’ before ‘int’

最佳答案

由于 obj 的类型是依赖类型,您必须使用 template 关键字来告诉编译器它是一个模板:

Xclass<T2> obj;
obj.template xfunc<int>();

参见 Where and why do I have to put the "template" and "typename" keywords?有关何时必须使用 template 的详尽说明。

关于c++ - 无法将模板化函数显式实例化为模板化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21665224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com