模板c中的typedef++;类doen';在课堂外定义时不起作用? 我也尝试在模板C++中使用TyPulf,但它不起作用,我不知道如何修复它。 模板 类MyVector { 公众: typedef对象*iter; iter begin(); }; 样板 iter MyVector::begin()//问题出在这里 { }

模板c中的typedef++;类doen';在课堂外定义时不起作用? 我也尝试在模板C++中使用TyPulf,但它不起作用,我不知道如何修复它。 模板 类MyVector { 公众: typedef对象*iter; iter begin(); }; 样板 iter MyVector::begin()//问题出在这里 { },c++,C++,你能告诉我为什么不行吗 iter在该上下文中没有任何意义,您需要明确限定它: template <typename object> typename MyVector<object>::iter MyVector<object>::begin() { } 模板 typename MyVector::iter MyVector::begin() { } 在C++11中,可以使用尾随返回类型: template <typename object>

你能告诉我为什么不行吗

iter
在该上下文中没有任何意义,您需要明确限定它:

template <typename object>
typename MyVector<object>::iter MyVector<object>::begin()
{

}
模板
typename MyVector::iter MyVector::begin()
{
}
在C++11中,可以使用尾随返回类型:

template <typename object>
auto MyVector<object>::begin() -> iter
{

}
模板
自动MyVector::begin()->iter
{
}

iter
在该上下文中没有任何意义,您需要明确限定它:

template <typename object>
typename MyVector<object>::iter MyVector<object>::begin()
{

}
模板
typename MyVector::iter MyVector::begin()
{
}
在C++11中,可以使用尾随返回类型:

template <typename object>
auto MyVector<object>::begin() -> iter
{

}
模板
自动MyVector::begin()->iter
{
}

因为编译器不知道当遇到令牌
iter
时必须在
MyVector
内搜索
iter
。明确规定iter的范围,如:

template <typename object>
typename MyVector<object>::iter MyVector<object>::begin() //here is problem
{

}
模板
typename MyVector::iter MyVector::begin()//问题出在这里
{
}

因为编译器不知道当遇到令牌
iter
时必须在
MyVector
内搜索
iter
。明确规定iter的范围,如:

template <typename object>
typename MyVector<object>::iter MyVector<object>::begin() //here is problem
{

}
模板
typename MyVector::iter MyVector::begin()//问题出在这里
{
}
尝试以下操作

template <typename object>
class MyVector
{
public:
    typedef object* iter;
    iter begin();
};

template <typename object>
typename MyVector<object>::iter MyVector<object>::begin() //here is problem
{

}
模板
类MyVector
{
公众:
typedef对象*iter;
iter begin();
};
样板
typename MyVector::iter MyVector::begin()//问题出在这里
{
}
Typename
iter
是类
MyVector
的成员,您必须使用语法来访问类成员。

尝试以下操作

template <typename object>
class MyVector
{
public:
    typedef object* iter;
    iter begin();
};

template <typename object>
typename MyVector<object>::iter MyVector<object>::begin() //here is problem
{

}
模板
类MyVector
{
公众:
typedef对象*iter;
iter begin();
};
样板
typename MyVector::iter MyVector::begin()//问题出在这里
{
}

Typename
iter
是类
MyVector
的成员,您必须使用语法来访问类成员。

iter
这与示例中的内部类型类似,对于主类之外的任何用法,您需要在其之前指定主类类型:

MyVector<object>::iter
MyVector::iter

iter
就像示例中的内部类型一样,对于主类之外的任何用法,您需要在其之前指定主类类型:

MyVector<object>::iter
MyVector::iter

如果它不起作用呢?如果它不起作用呢?您还需要
typename
因为它是一个从属名称。您还需要
typename
因为它是一个从属名称。