1. ホーム
  2. c++

[解決済み] error: 'int'の前にunqualified-idがあるはずです。

2022-02-19 14:48:45

質問

コードをコンパイルしようとすると、次のようなエラーが発生します。同じエラーが発生した人たちの他の質問を読みましたが、どの回答も私には関係ありません。

user.cpp:15:7: error: expected unqualified-id before ‘int’
  User(int user_id, string user_name, int user_year, int user_zip)
       ^
user.cpp:15:7: error: expected ‘)’ before ‘int’

何かお手伝いいただけると幸いです。

user.cpp:

#include "user.h"

using namespace std;

User(int user_id, string user_name, int user_year, int user_zip)
{
   id = user_id;
   name = user_name;
   year = user_year;
   zip = user_zip;
   friends = {};
}

~User()
{

}

void User::add_friend(int id)
{
   friends.push_back(id);
}

void User::delete_friend(int id)
{
   for (int i = 0; i < friends.size();++i)
   {
      if (friends[i] == id)
      {
         friends.erase(vec.begin() + i);
      }
   }
}

int User::getID()
{
   return id;
}

string User::getName()
{
   return name;
}

int User::getYear()
{
   return year;
}

int User::getZip()
{
   return zip;
}

vector<int>* User::getFriends()
{
   return &friends;
}

user.h:

#ifndef USER_H
#define USER_H
#include <string>
#include <vector>

class User {

 public:

    User(int user_id, std::string user_name, int user_year, int user_zip);
    ~User();
    void add_friend(int id);
    void delete_friend(int id);
    int getID();
    std::string getName();
    int getYear();
    int getZip();
    std::vector<int>* getFriends();

 private:

    int id;
    std::string name;
    int year;
    int zip;
    std::vector<int> friends;

};

#endif

解決方法は?

この行です。

User(int user_id, string user_name, int user_year, int user_zip)

のコンストラクタの定義ではありません。 User のインスタンス化であり User オブジェクトを生成するため、コンストラクタに渡される引数のリストが必要となります。 int は、渡すことができる有効な識別子ではありません。

コンストラクタの正しい定義方法です。

User::User(int user_id, string user_name, int user_year, int user_zip)

同様に、デストラクタについても

User::~User()