gpt4 book ai didi

c++ - 为什么编译会导致 missing template arguments 错误?

转载 作者:行者123 更新时间:2023-11-28 00:47:27 26 4
gpt4 key购买 nike

我希望使用带有模板参数 V 的 Spring 类:

#include "Spring.hpp"
template <typename K, typename L>
struct spring_value {
K spring_constant;
L spring_length;
};

typedef Spring<std::vector<spring_value<double, double>>> Spring;
typedef Spring::value value; // why struct Force does not see this?

struct Force {
value v = {1.0, 2.0}; // error
spring_value<double,double> v = {1.0, 2.0}; // ok, but ...
double s = v.spring_value; // also error

}

Spring 类:

template <typename V>               
class Spring {

public:
typedef V value;

}

但是,该程序会产生一个 missing template arguments before 'v' 错误。为什么 struct Force 看不到 Spring 类中的 spring valuevalue

最佳答案

这甚至不应该编译:

typedef Spring<spring_value<double, double>> Spring;

不能有两个同名的类型!

将模板重命名为类似 Spring_ 的名称,或为其提供默认模板参数。

关于c++ - 为什么编译会导致 missing template arguments 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754649/

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