在模板,在那里,为什么我必须把typename和template上依赖的名字呢?究竟什么是依赖名称?我有以下代码:
template <typename T, typename Tail> // Tail will be a UnionNode too.
struct UnionNode : public Tail {
// ...
template<typename U> struct inUnion {
// Q: where to add typename/template here?
typedef Tail::inUnion<U> dummy;
};
template< > struct inUnion<T> {
};
};
template <typename T> // For the last node Tn.
struct UnionNode<T, void> {
// ...
template<typename U> struct inUnion {
char fail[ -2 + (sizeof(U)%2) ]; // Cannot be instantiated for any …Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
template<class K>
class C {
struct P {};
vector<P> vec;
void f();
};
template<class K> void C<K>::f() {
typename vector<P>::iterator p = vec.begin();
}
Run Code Online (Sandbox Code Playgroud)
为什么此示例中需要"typename"关键字?是否还有其他必须指定"typename"的情况?
您好,我想从其他类访问嵌套类。
class OutSideClass
{
public:
class InSideClass
{
...
};
friend class InSideClass;
};
class Other
{
InSideClass x; // This doesn't work
};
Run Code Online (Sandbox Code Playgroud)
InSideClass 类是一个公共类,所以我不明白为什么我可以从外部访问它
我也想访问
template <typename T>
class OutSideClass
{
public:
class InSideClass
{
class InSideClassIterator
{
};
};
public:
class Other
{
OutSideClass<T>::InSideClass::InSideClassIterator x;
};
};
Run Code Online (Sandbox Code Playgroud)