我已在使用聲明在工廠使用指針的功能,生成的編譯時間錯誤
template<typename T> using createShapeFunction = Shape<T>(*)(void);
。這是一個工廠,所以當我限定我使用以下語法createShape()方法如下:
createShapeFunction<T>* function = creationFunctions.at(nameOfType);
Shape<T>* returnShape = *function();
現在,這給我的錯誤:
error C2064: term does not evaluate to a function taking 0 arguments
誰能告訴我爲什麼?
編輯:我忘了提以下:
- creationFunction是類型爲std ::地圖<的std :: string,createShapeFunction < T> *> creationFunctions
- ,我使用的功能創建對象具有以下特徵的靜態形狀* __stdcall的Create()
該消息對應哪一行? –
@OliCharlesworth形狀 * returnShape = * function(); –
ciprianr
@ciprianr該行嘗試調用'function',然後取消引用結果。這可能不是你想要的。 – molbdnilo