#pragma once
#include "Predefined.h"
#include <string>
#include <vector>
using namespace std;
namespace Packets
{
enum { EnumLoginData, EnumPlayerData };
struct LoginData
{
std::string username;
std::string password;
};
struct PlayerData
{
Predefined::Vector2 position;
};
struct MainPacket
{
char type;
int id;
LoginData loginData;
vector<PlayerData> playerData;
};
}
Код, указанный выше, представляет собой один заголовочный файл PacketDefines.h. У меня есть несколько структур, подготовленных, так как вы можете видеть, что я буду использовать в другой части моей программы. Теперь структура PlayerData использует объект Predefined :: Vector2, который является настраиваемой структурой, созданной в Predefined.h, которая включена в текущий файл заголовка.объект x не является членом struct y
Проблема заключается в том, что я получаю эту ошибку на нем:
error C2146: syntax error : missing ';' before identifier 'position'
Кроме того, это делает его так, что еще что-то в коде, который зависит от этой структуры вызывает бросать ошибку:
error C2039: 'position' : is not a member of 'Packets::PlayerData'
Это Предопределенные заголовочный файл:
#pragma once
#include <iostream>
#include <memory>
#include "PacketDefines.h"
// some other includes
using namespace std;
#define LOBBY_MAX_CONNECTIONS 5
#define MAX_DATA_SIZE 512
namespace Predefined
{
struct Vector2
{
Vector2(float valueX = 0.0f, float valueY = 0.0f) : x(valueX), y(valueY) {}
float x;
float y;
};
struct Vector3
{
Vector3(float valueX = 0.0f, float valueY = 0.0f, float valueZ = 0.0f) : x(valueX), y(valueY), z(valueZ) {}
float x;
float y;
float z;
};
struct Connection
{
int ID;
SOCKET socket;
Packets::PlayerData playerData;
};
struct Lobby
{
string lobbyName;
vector<Connection> connectionList;
};
}
Я понятия не имею, что происходит так насколько мне известно, все связано так, как должно. Надеюсь, моя проблема ясна, и кто-то может помочь мне решить эти ошибки.
Они включают друг друга. Это называется циклической зависимостью. Вам нужно как-то удалить эту зависимость. – Ben
Я проверю. Дело в том, что они нужны друг другу, и я хочу сохранить их отдельно, а также – Dries