C++:在两个类中使用模板化 typedef

标签 c++ templates typedef

您好,我有以下类(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/

相关文章:

c++ - 如何判断一个字符串是否包含另一个字符串

javascript - Backbone.js:将事件绑定(bind)到模板按钮

c++ - 为什么重载函数模板顺序对基本类型很重要?

c++ - 内置类型的析构函数(int、char 等)

c++ - Qt 5.3 信号和槽、简单函数和 Lambda 表达式

c++ - 计算最大成对积 C++ 的问题

c++ - |= 和 &= 是如何工作的?

c++ - 是否可以在 C++ 中使用 "bundle"模板参数?

c++ - typedef 模板,这个可行吗?

objective-c - 如何使用 typedef 枚举创建 "or' ed"开关?