这是我得到的错误“ 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.
答案 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>&
希望这会有所帮助。