我遇到的问题基本上可以通过下面的代码来解释:
void (*fn_ptr)();
template<typename T> void Second(){
//do something
}
template<typename T> void First() {
//do init
fn_ptr = Second<T>;
}
函数First
和函数Second
都需要template function
并且只能通过函数指针调用fn_ptr
。函数First
必须在调用函数之前调用一次Second
。您不需要手动调用函数 Second。所以我们之前唯一应该做的fun_ptr
就是在某处使用:
fn_ptr = First<SomeType>;
问题来了:我怎样才能阻止人们这样做:
fn_ptr = Second<SomeType>;
ps:我知道functionFirst
和functionSecond
都没有的时候怎么办template function