c++ - 我如何使用模板化的 typedefs,它们是_in_一个类,来自类外部(例如,由另一个类),与 boost::graph 相关

标签 c++ boost templates graph typedef

我在 Modifying vertex properties in a Boost::Graph 下找到了一个关于如何使用 boost::graph 创建模板图的非常有用的答案。

对我来说,这非常方便,只要我在 Graph-class 本身中完成所有关于图的工作。

但是,可能需要从外部访问信息,例如一个人可能想要实现一个打印机类,它接受一个图形对象并打印出所有存储的信息。

在这种情况下,访问所有顶点可能很方便(例如,通过顶点迭代器)。不幸的是,这行不通,因为所有 typedef 都是在 Graph 类中完成的,并且无法从外部访问此信息,因此 Printer 类不知道什么是顶点迭代器等。

我怎样才能解决这个问题并仍然保留模板化方面?

谢谢。

最佳答案

但是 typedef 是公开的,因此您可以从外部访问它们:

template<typename T>
class A
{
public:
    typedef T type;
    typedef unsigned data;
};

现在是这样的:

A<int>::type // int
A<int>::data // unsigned

注意,如果未指定 T

template<typename T>
void func( A<T>& a )
{
    typename A<T>::type // T
    typename A<T>::data // unsigned
}

关于c++ - 我如何使用模板化的 typedefs,它们是_in_一个类,来自类外部(例如,由另一个类),与 boost::graph 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251394/

相关文章:

c++ - 如何添加软件更新订阅

c++ - 您可以提供哪些文档(、链接和建议)来创建测试库?

c++ - Boost Asio延迟写入tcp套接字

c++ - boost::hash<double> 在 RHEL 5.4 64 位上的奇怪行为

c++ - 调用模板函数出错

c++ - 获取在 C/C++ 中调用的最后一个函数

c++ - 如何将内存分配给大小为 10^9 的二维数组

c++ - 序列化一个浮点 vector

parsing - GAE Go template.Execute,传递带有向量的结构

c++ - 没有调用 for_each 的匹配函数