运算符+中的模板&&无效操作数

时间:2019-01-05 04:23:08

标签: c++

friend myList<T> operator +( myList<T> &c1,myList<T> &c2);

myList<T> operator +(myList<T> &c1, myList<T> &c2)
{
    int len1 = c1.getLength();
    int len2 = c2.getLength();
    int newLen = len1+len2;
    int newSize = newLen;
    T * newList = new T[newSize];
    for(int i = 0;i<len1;i++){
        newList[i] = c1.data[i];
    }
    for(int j=len1;j<newLen;j++){
        newList[j] = c2.data[j-len1];
    }
    delete c1.data;
    c1.data = newList;
    c1.size = newSize;
    c1.length = newLen;
    return *c1;
}
void main(){
    myList<int> *a = new myList<int>(5);
    myList<int> *b = new myList<int>(5);
    a+b;
}

errormessage:当我调用“ myList < int >*”时,类型为“ myList< int > *”和“ a+b”的无效操作数为二进制“ operator +”,那么该怎么做才能正确呢?

1 个答案:

答案 0 :(得分:1)

有很多健康的方法可以解决您的问题,但我仍将命名为两个:-

  • Dereference您的两个指针...

    (*a)+(*b);
    
  • 只需使用普通的非指针类...

    myList<int> a = myList<int>(5);
    myList<int> b = myList<int>(5);
    // ...
    

此外,如果您使用的是指针,请不要忘记使用delete并将其分配给nullptr从内存中释放指针...请参见{{3} }以获取更多信息...