1. ホーム
  2. c++

[解決済み] エラー "C++ はメソッド定義中のすべての宣言に型指定子を必要とします".

2022-03-07 13:35:16

質問

C++は比較的初心者なのですが、なぜこのようなエラーが発生するのか理解できません。 C++ requires a type specifier for all declarations whilst defining methods.

テキストファイルを一行ずつ読み込んで、値を配列に格納する簡単なプログラムを作ろうとしています。しかし、.cppファイルでメソッドを宣言しようとすると、問題が発生します。以下のコードをご覧ください。

StringList.h

#ifndef StringListH
#define StringListH

#include <vector>
#include <string>

class StringList {
public:
     StringList();
     ~StringList();
     void PrintWords();
private:
     size_t numberOfLines;
     std::vector<std::string> str;
};

#endif

文字列リスト(StringList.cpp)

#include "StringList.h"
#include <fstream>
#include <istream>
#include <algorithm> // std::copy
#include <iterator>  // istream_iterator

using namespace std;

StringList::StringList()
{
    ifstream myfile("input.in");
    if (myfile.is_open())
    {
        copy(
            istream_iterator<string>(myfile),
            istream_iterator<string>(),
            back_inserter(str));
    }
    numberOfLines = str.size();
}

StringList::~StringList(){
    //Deconstructor
}

// Error Happens Here
StringList::PrintWords(){
    //Print My array
}

ググっても無駄でした。C++の適切なドキュメントの読み方をまだよく理解していないので、ちょっと困っています。今まで3、4個ほど(単純な)オブジェクト指向のプログラムを書いてきましたが、この問題は一度もありませんでした。もしそれが役に立つなら、私はXcodeを使っていますが、私はeclipseでも同じエラーを出します。

私のヘッドファイルで定義されたメソッドは、戻り値の型、名前、パラメータに関係なく、このエラーが発生するようです。もしPrintWords()を削除すれば、プロジェクトはうまく構築されます。

何かご指摘があれば、ぜひお願いします。

どのように解決するのですか?

として宣言しています。 void であるべきですが、定義に入れ忘れました。

void StringList::PrintWords()