类中的运算符(“ C ++要求所有声明都使用类型说明符”)

时间:2019-03-23 19:38:41

标签: c++

这是我得到的错误“ C ++要求所有声明都使用类型说明符”,我不知道如何解决它

//this code id in the DynamicStringArray.cpp
template<class T>
DynamicArray<T>:: operator = (const DynamicArray<T> &rightSide) {
  if(this != &rightSide) {
    delete[] dynamicArray;
    dynamicArray = new T[rightSide.size];
    size = rightSide.size;
    for(int i = 0; i < size; i++) {
      dynamicArray[i] = rightSide.dynamicArray[i];
    }
  }
//and this one is in the DynamicStringArray.h
template <class T>
class DynamicArray{
public:
DynamicArray<T> operator=(const DynamicArray &rightSide);
exit status 1
DynamicStringArray.cpp:64:19: error: C++ requires a type specifier for all declarations
DynamicArray:: operator = (const DynamicArray &rightSide) {
                  ^
1 error generated.

1 个答案:

答案 0 :(得分:1)

  

“ C ++要求所有声明都使用类型说明符”我不知道如何   修复

您可以通过在声明中添加类型说明符来解决此问题。功能是什么

template<class T>
DynamicArray<T>:: operator = (...)

返回?可能不是int或float或bool,对吗?编译器不知道,因为您没有确定返回类型是什么。

这是一个示例(我在SO中找到!):

// In MyClass.h
MyClass<T>&    operator+=(const MyClass<T>& classObj);


// In MyClass.cpp
template <class T>
MyClass<T>&    MyClass<T>::operator+=(const MyClass<T>& classObj) {
  // ...
  return *this;
}

在两种情况下,返回类型说明符都是简单的:

MyClass<T>& 

希望这会有所帮助。