【发布时间】:2012-07-19 20:41:20
【问题描述】:
我有一个类,它具有括号运算符的模板函数。它可以编译,但我不知道如何访问它。
见下面的例子:
class Test {
public:
template <class T> pServiceState operator[] (const std::string project) {
return getService<T>(project);
}
template <class T> pServiceState getService(const std::string project) {
pService s = get_service<T>();
if(s == NULL) throw "Service does not exist on server";
return s->state(project);
}
}
int main(){
states.getService<content_uploader>("asd"); // Works
states<content_uploader>["asd"]; // Throws syntax errors.
/*
error: expected primary-expression before ‘>’ token
error: expected primary-expression before ‘[’ token
*/
}
感谢您的帮助, 亚当
【问题讨论】:
-
你可以试试
states.operator[]<content_uploader>("asd");我不太确定这是否可行。 -
第 4 行不需要
return getService<T>(project)吗? -
是的,是克莱门特,错字。
-
@chris:确实这是唯一适用的语法