我在模板矢量类中重载operator *时遇到麻烦

时间:2018-11-17 02:55:15

标签: c++

这是我的运算符重载,用于将向量乘以一个int:

template <typename T>
int& vector<T>::operator*(const int& b) {
    int ans = 0;
    for (int i = 0; i < this->size(); i++) {
        ans += this[i] * b;
    }
    return ans;
}

这是我对vector * vector的重载,应该返回点积:

template <typename T>
int vector<T>::operator*(const vector<T>& b) const {
    int t = 0;
    for (int i = 0; i < b.size(); i++)
        t += (this[i] * b[i]);
    return t;
}

无论我如何定义或声明它,都会出现错误

  

没有运算符“ *”与这些操作数匹配
  操作数类型为:int * PIC10b :: vector

PIC10b是我编写的包含向量的名称空间的名称。

1 个答案:

答案 0 :(得分:0)

编译器无法理解代码的第一块,因为当函数说它将返回对int的引用时,您试图返回int。

int vector<T>::operator*(const int& b) {