1. ホーム
  2. c++

[解決済み] 関数名の前にイニシャライザがあることが予想される

2022-02-16 23:50:17

質問

#include <iostream>
#include <string>

using namespace std;

struct sotrudnik {
    string name;
    string speciality;
    string razread;
    int zarplata;
}

sotrudnik create(string n,string spec,string raz,int sal) {
    sotrudnik temp;
    temp.name=n;
    temp.speciality=spec;
    temp.razread=raz;
    temp.zarplata=sal;
    return temp;
}
*sotrudnik str_compare (string str1, string str2, sotrudnik sot1, sotrudnik sot2)

私はC++を学ぼうとしています。しかし、このコードをGCC-4.4.5で " g++ -Wall -c " というオプションを使ってコンパイルしようとすると、次のようなエラーが発生するのです。

g++ -Wall -c "lab2.cc" (in directory: /home/ion/Univer/Cpp)

lab2.cc:11: error: expect initializer before create
lab2.cc:20: error: expect constructor, destructor, or type conversion before str_compare
コンパイルに失敗しました。

どちらのエラーも、関数宣言に関連しています。(第 11 ラウンドは関数 create の宣言、第 20 ラウンドは関数 str_compare ). この種のエラーについてググってみましたが、エラーメッセージが非常に一般的であるため、同様のエラーの例を見つけることができませんでした。どのように意味を理解し、どのように解決すればよいのでしょうか?ご教示のほど、よろしくお願いいたします。

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

構造体の定義の最後にセミコロンがありません。

また

*sotrudnik

である必要があります。

sotrudnik*