gpt4 book ai didi

C++ 模板无法在 Linux GCC 上编译

转载 作者:行者123 更新时间:2023-11-30 02:14:59 24 4
gpt4 key购买 nike

我有一段代码可以在 Microsoft Visual Studio 上正常编译,但不能在 Linux Eclipse GCC 上编译。

这是代码:

template <class KEY, class BASEMAP>
class CGenericKeyToPointerMap : public std::map<KEY, BASEMAP>
{
private:
iterator tmpSearchIterator;

};

编译输出为:

Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.o" -o "src/test.o" "../src/test.cpp"
../src/test.cpp:22:2: error: invalid use of template-name ‘std::iterator’ without an argument list
iterator tmpSearchIterator;
^~~~~~~~
../src/test.cpp:22:2: note: class template argument deduction is only available with -std=c++17 or -std=gnu++17
In file included from /usr/include/c++/8/bits/stl_algobase.h:65,
from /usr/include/c++/8/bits/char_traits.h:39,
from /usr/include/c++/8/ios:40,
from /usr/include/c++/8/ostream:38,
from /usr/include/c++/8/iostream:39,
from ../src/test.cpp:9:
/usr/include/c++/8/bits/stl_iterator_base_types.h:118:12: note: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ declared here
struct iterator

最佳答案

避免使用的另一个原因

using namespace std;

我猜你想使用 std::map<KEY, BASEMAP>::iterator而不是 std::iterator在行中

iterator        tmpSearchIterator;

在那种情况下,使用

using iterator = typename std::map<KEY, BASEMAP>::iterator;
iterator tmpSearchIterator;

关于C++ 模板无法在 Linux GCC 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56863565/

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