模板c ++类中的typedef在定义类的一侧时不起作用?

Hai*_*yen 1 c++

我也尝试在我的模板c ++中使用typedef,但它不起作用,我不知道如何解决它.

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

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

}
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么它不起作用吗?

Tar*_*ama 6

iter 在这种情况下没有任何意义,你需要明确限定它:

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

}
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,您可以使用尾随返回类型:

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

}
Run Code Online (Sandbox Code Playgroud)