我有下面的类静态成员的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