I have this code:
In a c++ wxwidget application, I have this custom class:

#ifndef GRIDSTRINGTABLEGAMES_H
#define GRIDSTRINGTABLEGAMES_H

#include “Game.h”
#include “CompletionStatus.h”

#include <wx/grid.h>
#include <wx/arrstr.h>

class GridStringTableGames : public wxGridStringTable
{
public:
GridStringTableGames(int cols);
GridStringTableGames(const std::vector<Game>& g, int cols);
virtual ~GridStringTableGames();
int GetNumberRows() override;
int GetNumberCols() override;
wxString GetValue(int row, int col) override;
void SetValue(int row, int col, const wxString& value) override;
wxString GetColLabelValue(int col) override;
std::vector<Game> GetGames();
void SetGames(std::vector<Game> games);
Game GetGame(int position);
void SetGame(int position, Game game);

private:
wxString GetCompletionStatusString(CompletionStatus status);
CompletionStatus GetCompletionStatusFromString(wxString status);
int GetIntFromString(wxString value);

std::vector<Game> games;
int columns;
};

#endif // GRIDSTRINGTABLEGAMES_H

#include “GridStringTableGames.h”

GridStringTableGames::GridStringTableGames(int cols) : GridStringTableGames(std::vector<Game>(), cols)
{
}

GridStringTableGames::GridStringTableGames(const std::vector<Game>& g, int cols) : games(g), columns(cols)
{
}

GridStringTableGames::~GridStringTableGames()
{
}

int GridStringTableGames::GetNumberRows()
{
return games.size();
}

int GridStringTableGames::GetNumberCols()
{
return columns;
}

wxString GridStringTableGames::GetValue(int row, int col)
{
switch (col)
{
case 0: return games[row].GetName();
case 1: return games[row].GetSystem();
case 2: return games[row].GetGenre();
case 3: return GetCompletionStatusString(games[row].GetCompletetionStatus());
case 4: return wxString(std::to_string(games[row].GetFinishYear()));
case 5: return wxString(std::to_string(games[row].GetStartYear()));
default: return “”;
}
}

void GridStringTableGames::SetValue(int row, int col, const wxString& value)
{
switch (col)
{
case 0: games[row].SetName(value); break;
case 1: games[row].SetSystem(value); break;
case 2: games[row].SetGenre(value); break;
case 3: games[row].SetCompletetionStatus(GetCompletionStatusFromString(value)); break;
case 4: games[row].SetFinishYear(GetIntFromString(value)); break;
case 5: games[row].SetStartYear(GetIntFromString(value)); break;
}
}

wxString GridStringTableGames::GetColLabelValue(int col)
{
switch (col)
{
case 0: return “Name”;
case 1: return “System”;
case 2: return “Genre”;
case 3: return “Completion Status”;
case 4: return “Finish Year”;
case 5: return “Start Year”;
default: return “”;
}
}

void GridStringTableGames::SetGames(std::vector<Game> g)
{
games = g;
}

std::vector<Game> GridStringTableGames::GetGames()
{
return games;
}

Game GridStringTableGames::GetGame(int position)
{
return games[position];
}

void GridStringTableGames::SetGame(int position, Game game)
{
games[position] = game;
}

wxString GridStringTableGames::GetCompletionStatusString(CompletionStatus status)
{
switch (status)
{
case CompletionStatus::Unplayed: return “Unplayed”;
case CompletionStatus::Playing: return “Playing”;
case CompletionStatus::Completed: return “Completed”;
case CompletionStatus::Played: return “Played”;
case CompletionStatus::OnHold: return “OnHold”;
case CompletionStatus::Dropped: return “Dropped”;
default: return “”;
}
}

CompletionStatus GridStringTableGames::GetCompletionStatusFromString(wxString status)
{
if (status == “Unplayed”)
{
return CompletionStatus::Unplayed;
}
else if (status == “Playing”)
{
return CompletionStatus::Playing;
}
else if (status == “Completed”)
{
return CompletionStatus::Completed;
}
else if (status == “Played”)
{
return CompletionStatus::Played;
}
else if (status == “OnHold”)
{
return CompletionStatus::OnHold;
}
else if (status == “Dropped”)
{
return CompletionStatus::Dropped;
}
else
{
return CompletionStatus::Unplayed;
}
}

int GridStringTableGames::GetIntFromString(wxString value)
{
long l = 0;
value.ToLong(&l);

return static_cast<int>(l);
}

// FRAME CODE
FrameMain::FrameMain(wxWindow* parent) : FrameMainView(parent)
{
    SetIcon(wxIcon("res/icon.gif", wxBITMAP_TYPE_GIF));

    GridStringTableGames* table = new GridStringTableGames(6);

    Game game("Mario Bros.", "NES", "Platform", CompletionStatus::Completed, 2018, 0);
    table->SetGame(0, game);
    table->SetGame(1, Game("Sonic Adventures", "Genesis", "Platform", CompletionStatus::Playing, 0, 2020));
    //...

    //gridGames->SetTable(table, true); //change this

But I want to change it because SetTable is giving me errors, how can I connect this calss with  my grid wxGrid* gridGames, and using SetCellValue to add games, instead of settable.