错误:Deck :: Deck将构造函数命名为不是类型

时间:2017-04-27 21:02:34

标签: 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);
{
    push();
    return *this;
}

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

1 个答案:

答案 0 :(得分:0)

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

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

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