gpt4 book ai didi

C++模板函数错误: variable or field 'swapAdjacent' declared void

转载 作者:行者123 更新时间:2023-11-30 01:12:40 24 4
gpt4 key购买 nike

这是我的列表类

template <typename Object>
class List {
public:
class iterator {
...
};
....
};

这是我的功能

template <typename Object>
void swapAdjacent(List<Object>::iterator & itrA, List<Object>::iterator & itrB) {

}

编译后出现如下错误

error: variable or field 'swapAdjacent' declared void

为什么它不能工作?

如果我将我的代码更改为以下,它就可以工作

void swapAdjacent(List<int>::iterator & itrA, List<int>::iterator & itrB) {

}

我需要帮助;为什么第一个功能不起作用?

最佳答案

这似乎是一个奇怪的编译器错误,但看起来您的问题是您需要告诉编译器依赖名称 List<Object>::iterator命名一个类型。您使用 typename 执行此操作关键词:

template <typename Object>
void swapAdjacent(typename List<Object>::iterator & itrA,
typename List<Object>::iterator & itrB) {

}

参见 this question有关 typename 的更多信息关键字。

为简洁起见,您可以只使用迭代器作为模板参数,这样也可以自动推导:

template <typename Iterator>
void swapAdjacent(Iterator & itrA, Iterator & itrB) {

}

关于C++模板函数错误: variable or field 'swapAdjacent' declared void,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647448/

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