我有這樣一個類:使用靜態地圖不同功能的內部類中:
class SelectorFactory
{
public:
static std::map<std::string,int> _creator;
static void registerCreator(std::string& name,int value)
{
//static std::map<std::string,int> _creator;
if(_creator.end() != _creator.find(name))
{
std::cout << "Selector already registered \n";
}
else
{
std::cout << "Entering " <<name<<" in register: \n";
_creator[name]=value;
}
}
static int createSelector(std::string selectorName)
{
//static std::map<std::string,int> _creator;
std::map< std::string , int >::iterator mapIter=_creator.find(selectorName);
if(mapIter==_creator.end())
{
std::cout<<selectorName<<" Not found in the Map \n" ;
return 0;
}
else
{
int selector= mapIter->second;
return selector;
}
}
};
如果我去掉上面的註釋行,代碼得到編譯,但它沒有返回從createSelector功能是任何值非常明顯。但如果我保留他們的評論,我在兩個函數中都會出現「_creator未在此範圍內聲明」的錯誤。 我該怎麼做才能糾正這個問題。
您的代碼。 'createSelector'可以在不返回任何東西的情況下結束。你應該先解決。 – juanchopanza
什麼是「Int」,是否與「int」相同?你爲什麼要比較'int'和'NULL'? 'selector'不是一個指針。代碼不能編譯,因爲'Selector'沒有聲明。請修復您的代碼以顯示真正的問題。 –
@JonathanWakely:謝謝:) – sajal