C++ 错误:Deck::Deck将构造函数命名为非类型

C++ 错误:Deck::Deck将构造函数命名为非类型,c++,overloading,operator-keyword,C++,Overloading,Operator Keyword,我试图用以下代码重载++和--运算符: 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);

我试图用以下代码重载++和--运算符:

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::Deck命名构造函数而不是类型。我的问题是我是否实现了错误的代码。这在deck.cpp文件中,而在deck.h中,原型与deck类本身一起存在。任何帮助都将不胜感激。

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

此外,如果函数是类
Deck
的成员函数,则在类外定义时,定义应如下所示:

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

将返回类型中的
Deck::Deck
更改为
Deck
当我尝试得到此错误时:“Deck操作符--(int)必须有一个类或枚举类型的参数”如果我在任何行中仅用Deck替换Deck::Deck,那么我会得到每个行的错误这些成员函数是吗??