【发布时间】:2015-04-08 10:39:36
【问题描述】:
我正在尝试在库中用 C++ 实现标量积:
namespace Foo
{
double operator* (vector<double> left, vector<double> right)
{
...
}
}
但我在主程序中调用它时遇到问题。调用
int main (void)
{
...
double result = Foo::operator* (l, r);
...
}
不是一个好的解决方案,而:
int main (void)
{
...
double result = l * r; //l, r are vector<double>
...
}
不工作。
using namespace Foo 被认为是全球使用的不良做法。
在main 范围内调用我的operator* 函数的好方法是什么?
【问题讨论】:
-
重载的操作符应该通过 ADL 工作。在 Foo 中编写你自己的向量类。
-
vector * vector 是双精度的,这没有任何意义
-
@billz 使用点积时会这样
-
您可以在
main中使用use namespace Foo;。 -
最好有一个名为“dot”的方法来明确说明它的作用,而不是为此重载 *。
标签: c++ namespaces operator-overloading