c++ - 将模板化结构的对象传递给另一个模板化类的成员函数

标签 c++ templates

我有一个模板类 alpha_x 给出,

template <typename T,typename U>
struct alpha_x {
    const T & alpha;
    const Scalar<U> & x;
    alpha_x(const T & a_, const Scalar<U> & x_) : alpha(a_), x(x_) {};
};

我有另一个带有运算符 = 重载的类

template <typename T>
class Scalar{
    ...
    template <typename U,typename V>
    const Scalar<T> & operator = (alpha_x<U,V> c);
    ...
}

当我们尝试定义这个函数时,

template <typename T,typename U,typename V>
const Scalar<T> & Scalar<T>::operator = (alpha_x<U,V> c){
    //do something...
}

现在这会出现错误“模板重新声明中的模板参数太多”。我该如何解决这个问题?

最佳答案

T 模板参数是类Scalar 的模板参数。因此需要在单独的模板参数列表中指定。

以下内容可行:

template <typename T>
template <typename U, typename V>
const Scalar<T> & Scalar<T>::operator = (alpha_x<U,V> c){
    // do something...
}

关于c++ - 将模板化结构的对象传递给另一个模板化类的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60970382/

相关文章:

c++ - 从 boost::compute::detail::sha1 生成 boost::uuids::uuid

c++ - 使用 openMP 进行并行化 - 堆栈或堆变量

c++ - vector<string> 如何存储在内存中

c++ - 使用推导类类型的占位符指定类型的非类型模板参数是否可以传递给 C++2a 中的另一个模板?

amazon-web-services - Terraform for 循环

C++ dynamic_cast - 多态要求和向下转型

c++ - 使用 BNF 语法提取信息

c++ - std::enable_if 的替代方案和模板模板参数的显式重载

C++ 函数模板的奇怪类型转换错误

c++ - 在类方法内部访问和分配的多维 map 模板