У меня есть структура:
typedef struct
{
Qt::Key qKey;
QString strFormType;
} KeyPair;
Теперь я инициализирую экземпляры KeyPair, чтобы использовать его для своего приложения Automated Test.
KeyPair gDial[] =
{
{ Qt::Key_1 , "MyForm" },
{ Qt::Key_1 , "SubForm" },
{ Qt::Key_Escape, "DesktopForm" }
};
KeyPair gIP[] =
{
{ Qt::Key_1 , "MyForm" },
{ Qt::Key_2 , "Dialog" },
{ Qt::Key_2 , "Dialog" },
{ Qt::Key_Escape, "DesktopForm" }
};
....
and like 100 more instantiations....
В настоящее время я вызываю функцию, которая использует эти пары ключей.
qDebug() << "Testing Test Menu";
pressKeyPairs( gDial);
qDebug() << "Testing Browse Menu";
pressKeyPairs( gIP);
....
and more calls like this for the rest...
Я хотел бы поместить все эти экземпляры KeyPair в MAP, чтобы мне не пришлось вызывать pressKeyPairs() и qDebug () сто раз ... Я новичок в использовании MAPS ... поэтому я попытался:
map<string,KeyPair> mMasterList;
map<string,KeyPair>::iterator it;
mMasterList.insert( pair<string, KeyPair>("Testing Test Menu", *gDial) ); //which I know is wrong, but how?
mMasterList.insert( pair<string, KeyPair>("Testing IP Menu", *gIP) );
mMasterList.insert( pair<string, KeyPair>("IP Menu2", *gIP2) );
....
for ( it=mMasterList.begin() ; it != mMasterList.end(); it++ )
{
qDebug() << (*it).first << endl;
pressKeyPairs((*it).second);
// I don't know how to access .second ... this causes a compiler error
}
РЕДАКТИРОВАТЬ: pressKeyPairs объявлен как:
template <size_t nNumOfElements> void pressKeyPairs(KeyPair (&keys)[nNumOfElements]);
Этот блок кода не работает ... :( Кто-нибудь может подсказать, как правильно разместить эти пары ключей на карте?