Reputation: 311
Here is my BoardField.h:
#pragma once
#include "ChessPiece.h"
#include "Game.h"
#include <SDL.h>
class BoardField{
private:
ChessPiece m_piece;
SDL_Rect m_field;
public:
friend class Game;
};
And Game.h
#pragma once
#include "BoardField.h"
class Game {
private:
//members
BoardField* m_board_fields; // 16th line
...
//methods
...
public:
...
};
And I'm getting these errors in VS2017 when trying to compile :
Where is the problem? Even tried to create new project it doesn't work anyway.
Upvotes: 0
Views: 70
Reputation: 41127
To break the circular references, you should use a forward reference. Since you are using a raw pointer, that's all that is required:
#pragma once
class BoardField;
class Game {
private:
//members
BoardField* m_board_fields;
...
//methods
...
public:
...
};
Of course, in Modern C++ you should be avoiding raw pointers. For a case like a privately owned heap allocation, unique_ptr is the best option in most cases:
#pragma once
#include <memory>
class BoardField;
class Game {
private:
//members
std::unique_ptr<BoardField> m_board_fields;
...
//methods
...
public:
...
};
You should read this blog post
Upvotes: 2