如何将两种类型的数据分配给一个变量?

问题描述 投票:0回答:4

几周前我刚刚开始学习 C++,现在正在尝试制作 Blackjack 游戏。 我试图做的是创建一个包含所有卡的变量的数组,例如:h1、hj、c4、ck;这些分别代表红心 1、红心 J、梅花 4 和梅花 K。

我希望这些变量既包含字符串(卡的名称)又包含整数(要添加的数字的值)。

有没有办法让一个变量包含两个值?

谢谢。

c++ arrays variables
4个回答
9
投票

您可以为您需要的变量创建一个结构。

struct card
{
      string name;
      int value;
};

然后按如下方式使用:

card.name = "hearts";
card.value = 1;

6
投票

简单来说有两个解决方案:

1)使用元组

std::tuple<std::string,int> Hearts1=std::make_tuple("h1", 12);
std::tuple<std::string,int> Clubs1=std::make_tuple("c1", 13)

查看更多:http://en.cppreference.com/w/cpp/utility/tuple

2)使用对象

class Hearts
{
  std::string name;
  int value;
};

class Clubs
{
  std::string name;
  int value
};

int main()
{
  Clubs CO; CO.name="abc"; CO.value=12;
  Hearts HO; HO.name="dce"; HO.value=13;
}

我建议在进行这样的项目之前学习 C++ 编程的基础知识。我强烈推荐从《C++ 编程语言》(B.Stroustrup) 开始。


0
投票

现在现代 C++ 变量模板可用。

//DECLARE
template <typename T> T hearts[3];

//TESTING
int main()
{
    hearts<std::string>[0] = "Jack";
    hearts<int>[0] = 11;

    hearts<std::string>[1] = "Queen";
    hearts<int>[1] = 12;

    hearts<std::string>[2] = "King";
    hearts<int>[2] = 13;

    for (int i = 0; i < 3; i++)
    {
        std::cout << hearts<std::string>[i] << std::endl;
        std::cout << hearts<int>[i] << std::endl;
    }

    return 0;
}

-1
投票

您还可以使用具有相同索引的两个数组。只要确保它们同时创建和更新,以便具有相同索引的元素引用同一张卡片。

© www.soinside.com 2019 - 2024. All rights reserved.