【发布时间】:2023-03-20 02:40:01
【问题描述】:
我对 Qt 还很陌生。这是我使用的第一个框架。我正在使用 Qt 编写二十一点游戏。在我看来,我应该将每张卡片的图像存储在容器类中,例如QVector。容器类型为QImage。所以我会有一个声明,例如QVector<QImage> cards; 也许这不是解决这个问题的最佳方法,所以当然欢迎任何替代建议。但是,无论如何,我想知道是否可以在声明期间初始化容器。我一直无法解决这个问题,所以我的解决方案如下:
// Deck.h
class Deck
{
public:
Deck();
void shuffle(); // Creates new deck and shuffles it.
QImage &popCard(); // Removes first card off deck.
private:
void emptyDeck(); // Empty the deck so new cards can be added
QVector<QImage> cards;
QQueue<QImage> deck;
};
// Deck.cpp
Deck::Deck()
{
cards.push_back(QImage(":/PlayingCards/Clubs 1.png"));
cards.push_back(QImage(":/PlayingCards/Clubs 2.png"));
cards.push_back(QImage(":/PlayingCards/Clubs 3.png"));
cards.push_back(QImage(":/PlayingCards/Clubs 4.png"));
// continue process for entire deck of cards...
}
这似乎非常乏味,特别是如果我考虑稍后添加不同风格的扑克牌,或者如果我让用户选择在运行时更改扑克牌的风格。对此有何有效设计?
【问题讨论】:
-
"如果可以在声明期间初始化容器" - 在 c++ 中,没有。 “这似乎非常乏味” - 是的,但是您将获得经验并且下一个项目(或者可能是这个项目)您会做得更好。根据 aspera ad astra。祝你好运!
标签: qt initialization qimage qvector