级运算符 ( "C++ requires a type specifier for all declarations" )



这是我收到的错误" 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);
退出状态 1DynamicStringArray.cpp:64:19:错误:C++需要所有声明的类型说明符DynamicArray:: operator = (const DynamicArray &rightSide( {                  ^生成 1 个错误。

" C++需要所有声明的类型说明符"我不知道如何 修复它

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

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

返回? 可能不是整数、浮点数或布尔值,对吧? 编译器不知道,因为您没有确定返回类型是什么。

这是一个例子(我在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>& 

希望这有帮助。

最新更新