我有下面的類靜態成員的Qt對象在C++
class QBoardImages
{
public:
QImage empty_white;
QImage empty_black;
QImage possible_move;
QImage lighter;
QImage choosed;
QImage multiple_move;
QImage blue_pawn;
QImage blue_queen;
QImage blue_skydiver;
QImage red_pawn;
QImage red_queen;
QImage red_skydiver;
QBoardImages();
};
與構造,在那裏我有:
QBoardImages::QBoardImages()
{
QDir::setCurrent(QApplication::applicationDirPath());
empty_white.load("images/board/white.png");
empty_black.load("images/board/black.png");
lighter.load("images/board/lighter.png");
choosed.load("images/board/choosed.png");
blue_pawn.load("images/board/blue_pawn.png");
blue_skydiver.load("images/board/blue_skydiver.png");
blue_queen.load("images/board/blue_queen");
red_pawn.load("images/board/red_pawn.png");
red_skydiver.load("images/board/red_skydiver.png");
red_queen.load("images/board/red_queen.png");
possible_move.load("images/board/possible_move.png");
}
,當然我想只有一次加載這些圖像,但我無法要做到這一點。什麼是加載這些圖像只有一次的最佳方式?
謝謝大家
*「我想只有一次加載這些圖像,但我無法做到這一點..「*爲什麼?是因爲你在應用程序中創建了多個'QBoardImages'實例?如果是的話......不? – WhozCraig
是的。但我只需要在其他類的多個場合使用QBoardImages。當然,我只能創建一個QBoardImages實例,但爲此我需要靜態變量......當然,我可以使用一些快速和難看的解決方案,但我想找到一些優雅和普遍的東西。例如,我找到類似於Java中的靜態對象的解決方案。 – Firzen
1)使用單例有什麼錯誤? 2)你也可以讓這些QImages *靜態成員(即全局變量,在類範圍內),但這是一個壞主意,原因有很多。這將導致您使用'Q_GLOBAL_STATIC'或指向QImages的指針。 – peppe