Я начинаю изучать C ++ и пришел из C # фона, у меня много проблем.
То, что я хочу сделать, это попытаться воспроизвести точно то же самое, что я делаю в следующем фрагменте C #, с C ++.Это просто простая реализация шаблона MVP, который я использую довольно часто.
Я пытался разными способами заставить эту работу работать с правильным и современным C ++, но он постоянно дает мне ошибки компиляции, которые я не понимаю должным образом.Большинство из них связано с тем, что я не могу найти правильный способ передачи интерфейса в качестве параметра конструктора, а также для сохранения интерфейса в качестве поля класса.Может ли кто-нибудь перевести этот код C # в правильный код C ++ или хотя бы дать мне совет, пожалуйста?Заранее спасибо.
ПРИМЕЧАНИЕ. Я пытаюсь создать заголовочные файлы только с объявлением классов и cpp-файлами с реальной реализацией.
// This is my C# implementation that I want to convert in C++
public class Program
{
public static void Main()
{
IGameView view = new GameView();
Game game = new Game(view);
view.SetPresenter(game);
}
}
public interface IGameView
{
void SetPresenter(Game game);
}
public class GameView : IGameView
{
public void SetPresenter(Game game)
{
_game = game;
}
Game _game;
}
public class Game
{
public Game(IGameView view)
{
_view = view;
}
IGameView _view;
}
Это код C ++, который я пытаюсьсделать компиляцию.Я поместил все здесь без .h и .cpp для ясности и краткости, но, как я уже сказал, я фактически отделяю классы от реализации.
class Game
{
public:
(IGameView& view) : _view(view)
{ }
Game operator=(const Game &);
private:
IGameView& _view;
};
class IGameView
{
public:
virtual ~IGameView() {}
virtual void SetPresenter(const Game) = 0;
};
class GameView : public IGameView
{
public:
GameView();
void SetPresenter(const Game game) override
{
_game = game;
}
private:
Game& _game;
};
int main()
{
IGameView view;
Game game(view);
view.SetPresenter(game);
}