template <class VertexType>
class GraphMatrix
{
};
template <class GraphType>
class Graph
{
typedef typename GraphType::VertexType VertexType;
GraphType* graph_;
void addVertex(VertexType vertex)
{
}
//...
};
int main()
{
Graph <GraphMatrix <int> > graph;
return 0;
}
看看我是否将
typedef VertexType VertexType;//A
行添加到GraphMatrix
class
此代码将通过编译并且可以工作,否则会产生编译错误。错误:C2039:'VertexType':不是'GraphMatrix'的成员。我的问题是“是否有一种方法(语法)在不添加此愚蠢行//A
的情况下使上述代码起作用?”? 最佳答案
您始终可以编写VertexType
的全限定名称,typedef
只是您的快捷方式,它将名称带入范围并允许您编写更简洁的代码。
因此,在这种情况下,没有其他办法。
但是,在使用继承时,您可以using BaseClass::something
将其纳入范围。