gpt4 book ai didi

c++ - 模板类和运算符重载

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:49 24 4
gpt4 key购买 nike

如何重载如下所示的模板类?

template <class T>
const_iterator& List<T>::const_iterator::operator++()
{
current = current->next;
return *this;
}

template <class T>
const_iterator List<T>::const_iterator::operator++(int)
{
const_iterator old = *this;
++( *this );
return old;
}

我收到如下错误:

List.cpp:17: error: expected constructor, destructor, or type conversion before ‘&’ token
List.cpp:23: error: expected constructor, destructor, or type conversion before ‘List’
List.cpp:30: error: expected constructor, destructor, or type conversion before ‘&’ token
List.cpp:35: error: expected constructor, destructor, or type conversion before ‘List’

最佳答案

template <class T>
typename List<T>::const_iterator& List<T>::const_iterator::operator++()

在指定返回类型时,您不在所谓的 List<T> 的词法范围内.由于没有类型 const_iterator在封闭范围内,您会收到一个错误(恕我直言,尽管那个错误可能会表现得更好一点)。

C++11 的另一个选项可能是尾随返回类型:

template<class T>
auto List<T>::const_iterator::operator++()
-> const_iterator&
{
// ...
}

但是,最好的办法是在类本身中内联定义这些东西。您对课外定义有特殊原因吗?

关于c++ - 模板类和运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com