您好,我有以下类(class):
template<class T>
class RandomTree<T> {
private:
RandomTreeNode root;
typedef double (*funcion_ptr) (T, T);
public:
RandomTree(std::vector<function_ptr> functions){...}
};
template<class T>
class RandomTreeNode<T> {
private:
typedef double (*funcion_ptr) (T, T);
function_ptr function;
public:
RandomTreeNode(function_ptr function){...}
};
树被赋予一个函数指针 vector ,每个节点被创建并具有一个特定的函数。有没有办法让我不必在两个类中都定义 typedef double (*function_ptr) (T,T)
?
最佳答案
当你声明一个独立的函数指针类型时,与成员函数指针相反,你当然可以将 typedef 放在全局范围或命名空间中的单独模板化类中,这样它就可以被访问两个类。
像这样:
template<class T>
struct RandomTreeFunction
{
typedef double (*function_ptr)(T, T);
};
template<class T>
class RandomTree<T> {
private:
typedef typename RandomTreeFunction<T>::function_ptr function_ptr;
...
};
我还建议您考虑使用 std::function
相反。
关于C++:在两个类中使用模板化 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12932987/