【发布时间】:2020-10-02 11:01:04
【问题描述】:
我使用 C++11 标准编写了以下代码:
.h 文件:
#include "Auxiliaries.h"
class IntMatrix {
private:
Dimensions dimensions;
int *data;
public:
int size() const;
IntMatrix& operator+=(int num);
};
我得到的一点是错误的说法:
错误:重载运算符“+”的使用不明确(使用操作数类型 'const mtm::IntMatrix' 和 'int') 返回矩阵+标量;
知道导致此行为的原因以及如何解决它吗?
【问题讨论】:
-
这些定义应该在
mtm命名空间中,否则你声明了不同的函数,因此会产生歧义。 -
@smith -- 但为什么会这样呢? -- 这些是 C++ 的规则。这些实现在它们声明的命名空间之外。
-
@smith 重载函数在
mtm范围内,但您只使用using mtm::IntMatrix;和using mtm::Dimensions;。 -
之前有人告诉我,我可以在.cpp文件中编写所有定义
-
@smith -- 您可以将其写入单独的 cpp。问题是你做的不对。
标签: c++ class c++11 methods operator-overloading