c++ - 如何使用模板声明朋友运算符然后定义它
问题描述
我有一个类,里面有两个友元运算符重载:
template<typename T>
class A {
T i;
template <typename L, typename R>
friend auto operator+(const A<L> &l, const A<R> &r) -> A<decltype(l.i + r.i)>;
template <typename L>
friend auto operator+(const A<L> &l, const T &r) -> A<decltype(l.i + r)>;
}
我想知道如何在.cpp
文件中为这些函数创建定义(因为声明在头文件中)。
现在我这样做了,但它抛出了一个错误:
template <typename L, typename R>
auto operator+(const A<L> &l, const A<R> &r) -> A<decltype(l.i + r.i)>
{
return Vector3Generic<decltype(l.i + r.i)>(l.x + r.x, l.y + r.y, l.z + r.z);
}
错误:
Undefined symbols for architecture x86_64:
"A<decltype((fp.x) + (fp0.x))> operator+<float, float>(A<float> const&, A<float> const&)"
而且我绝对不知道如何使用父级的T
.
解决方案
推荐阅读
- jmeter - 在 Jmeter 中,我想同时访问 1000 个用户的 1000 个不同的 URL(每个用户同时访问一个 URL)
- algorithm - 在许多产品和多个卖家之间找到最佳组合
- python - 在 Tkinter 中集成点击终端?
- javascript - 如何从用户位置显示/隐藏特定内容?
- module - 在自定义模块 prestashop 1.7 中应用产品列表模板
- sql - 如何创建一个将 ROWS 放入 COLUMNS 的表视图
- go - GoLang 中的二传手
- c - 有没有办法在c中使用cassandra nodetool?
- java - 什么是频道向上键(在 javafx 中)?
- scala - 黄瓜 scala 无法构造 scala 选项