Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在模板化向量类中重载运算符*时遇到问题_C++ - Fatal编程技术网

C++ 在模板化向量类中重载运算符*时遇到问题

C++ 在模板化向量类中重载运算符*时遇到问题,c++,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; } 模板 int&vector::运算符*(常量i

这是我的运算符重载,用于将向量乘以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;
}
模板
int&vector::运算符*(常量int&b){
int ans=0;
对于(inti=0;isize();i++){
ans+=此[i]*b;
}
返回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向量::运算符*(常量向量和b)常量{
int t=0;
对于(int i=0;i
无论我如何定义或声明它,我都会得到一个错误

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


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

编译器不理解第一段代码,因为您试图返回一个int,而函数说它将返回对int的引用

int vector<T>::operator*(const int& b) {
int向量::运算符*(常量int&b){

欢迎使用堆栈溢出。请阅读、获取、阅读以及。最后学习如何创建。我还建议您签出。您的返回类型首先是从。您在
T
上创建了此模板,但您假设向量包含
int
。该操作符仅适用于
PIC10b::vector*int