Итак, я пытаюсь написать функцию, которая изменяет массив вне ее, вроде как передать значение функции в качестве ссылки. Вот мой код:Можно ли передать ссылку std :: array?
std::array<Card, 52> deck {};
std::array<Card, 52> &deckRef = deck;
initializeDeck(deckRef);
printDeck(deckRef);
и
void initializeDeck(std::array<Card, 52> deck){
int16_t cardNumber{0};
for(int counterSuit{0}; counterSuit < CardSuit::MAX_SUITS; ++counterSuit)
{
for(int counterRank{0}; counterRank < CardRank::MAX_RANKS; ++counterRank)
{
Card card { static_cast<CardRank::CardRank>(counterRank),
static_cast<CardSuit::CardSuit>(counterSuit)};
deck[cardNumber] = card;
++cardNumber;
}
}}
void printDeck(std::array<Card, 52> deck){
for(int16_t counter{0}; counter < 52; ++counter)
{
printCard(deck[counter]);
}}
printDeck печатает мусор, однако если добавить printCard() в initializeDeck(), он печатает все карты просто отлично, однако он не получает хранится в исходном массиве в main().
Я получаю эту ошибку, когда я это делаю;
void initializeDeck(std::array<Card, 52>& deck)
undefined reference to `initializeDeck(std::array<Card, 52u>)'|
Заранее благодарен! Спасибо заранее!
Вы пытались передать ссылку на 'std :: array'? Вы должны были обнаружить, что можете. –
Вы не проходите мимо ссылки. –
Вы по-прежнему передаете его по значению. Функции должны получать параметры в качестве ссылки – Kevin