1. ホーム
  2. c++

[解決済み] error: new types may not be defined in a return type

2022-02-03 07:07:49

質問

コンストラクタを実装した行で上記のエラーが発生しています。その行を指し示すコメントを作成しました。よろしくお願いします。

#include <vector>   
#include <time.h>      

class Stopwatch
{
    enum state {UNSTARTED, RUNNING, PAUSED, FINISHED};
    struct time
    {
        unsigned hours;
        unsigned minutes;
        unsigned seconds;
    };
    struct lap
    {
       unsigned n; // lap number
       time t; // lap time
       lap* next_ptr;
    };

    public: 
    Stopwatch();
    ~Stopwatch();
    void right_button(); // corresponds to start/stop/pause
    void left_button();  // corresponds to lap/reset

    private: 
    state cur_state;
    std::vector<lap> lapsvec;

}

Stopwatch::Stopwatch() // <--------- Here's where the compiler error is
{
    cur_state = UNSTARTED;
}

/* trivial destructor */
Stopwatch::~Stopwatch() 
{
}

int main()
{
    return 0;
}

問題を把握するためにC++のコンストラクタを見直しました。運が悪かった。

解決方法は?

を使用する必要があります。 ; の後、クラス宣言があります。これがないため、コンパイラが Stopwatch::Stopwatch() このため、新しい型であると文句を言われます。