错误:Deck::D eck 命名构造函数而不是类型

Error: Deck::Deck names the constructor not the type

本文关键字:类型 构造函数 Deck eck 错误      更新时间:2023-10-16

我正在尝试使用以下代码重载++和-运算符:

Deck::Deck& operator--(); 
{
pop();
Deck *this;
}      
Deck::Deck operator--(int q);
{
pop();
Deck *this;
}
Deck::Deck& operator++(); 
{
push();
return *this;
}      
Deck::Deck operator++(int q);
{
push();
return *this;
}

这会导致一个错误,指出 Deck::D eck 命名构造函数而不是类型。我的问题是我是否错误地实现了这段代码。这是在deck.cpp文件中,而在deck.h中是原型与deck类本身一起的位置。任何帮助将不胜感激。

正如编译器的错误中所述,Deck::Deck是类Deck的构造函数,因此不能用作返回类型,相反,如果要返回类型为Deck的对象,则将返回类型更改为Deck

此外,如果函数是类Deck的成员函数,那么定义应该是这样的,用于在类外部定义:

Deck Deck::operator--() { // or Deck Deck::operator--(int)
^^^^^^
// body
}