Player и Game - это два разных класса. Это в моем Game.h:
std::vector<Player*> players;
и
void setPlayers(Player**, int);
Это включено в мою игру. cpp:
std::vector<Player*> Game::getPlayers(){
return this->players;
}
/**
* @brief Sets a Player in a particular position inside a vector named players
*/
void Game::setPlayers(Player** player_arg, int p_position){
players[p_position] = *player_arg;
std::cout << "Player pos: " << players[p_position]->getRole() << "\n";
}
В моем основном . cpp, они используются так:
while(1){
Player* p;
jump_to_choice:
std::cout << "Please Enter your position: ";
std::cin >> role_choice;
(*p).setRole(role_choice);
if(player_check[(*p).getRole()-1] == 0){
//Adding a player to the Player* vector defined in game.h (players)
one.setPlayers(&p, (*p).getRole()-1);
player_check[(*p).getRole()-1] = 1;
player_count++;
}
}
return 0;
}
, где one
- Игра. Я не могу написать тест для него.
Я пытаюсь это:
TEST(gameTest, setPlayersTest) {
Player* p;
Game g;
(*p).setRole(2);
g.setPlayers(&p, (*p).getRole()-1);
EXPECT_EQ(1,g->(*players[1])->getRole());
}
Для этого я хочу получить доступ к вектору players
, но не знаю, как это сделать. Я продолжаю получить это:
#define EXPECT_EQ(val1,val2) EXPECT_PRED_FORMAT2(::testing::internal:: EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, val1, val2)
Expands to:
EXPECT_PRED_FORMAT2(::testing::internal:: EqHelper<GTEST_IS_NULL_LITERAL_(1)>::Compare, 1, g->(*players[1])->getRole())
expression must have pointer type