gpt4 book ai didi

c++ - 在c++中的模板类中定义方法

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:49 25 4
gpt4 key购买 nike

我正在制作一个具有可变模板参数的模板类。但是,当我定义和调用一个方法时,我的编译器说该方法未定义。

template <class T, class... Args>
class Params {
private:
vector<void*> params;
int n;

void initializeParam(T a, Args... args) {
params[n] = (void*)&a;
n++;
initializeParam(args...);
}

void initializeParam() {}

public:
Params(T a, Args... args) : params(vector<void*>(sizeof...(Args))) {
n = 0;
initializeParam(a, args...); // Compiler -> initializeParam is not defined
}
};

最佳答案

尝试重写主要的initializeParams()如下

template <typename U, typename ... As>
void initializeParam(U a, As... args) {
params[n++] = (void*)&a;
initializeParam(args...);
}

您当前的 initializeParams() 是从构造函数中调用的,但是当尝试递归调用自身时,没有带有正确参数的 initializeParams()

因此您必须将类的模板参数与 initializeParams()

的模板参数分开

关于c++ - 在c++中的模板类中定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003155/

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