问题标签 [c++98]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 SFINAE 检测成员函数
在 C++11 中,要确定一个类是否有成员函数size
,您可以定义以下测试助手:
在 C++98 中是否有类似的技巧可以在不依赖编译器扩展的情况下执行此操作,例如typeof
?
c++ - 构造一个 std::map来自 std::vector>
如何std::map<std::string, Foo>
从 a 构造 a std::vector<std::pair<std::string, Foo> >
?似乎 std::map 可以从输入迭代器构造。
更新
顺便说一句,在将向量中的字符串添加到地图时,我需要将它们转换为小写形式。这是因为我希望使用地图来获得向量中内容的排序版本。
c++ - 在 std::vector 上以排序方式迭代> 对象
我正在从 Foo 类型的数据库中读取一个对象,定义如下。该对象是 Foo 成员的向量,其中 Foo 成员由字符串 id 和容器对象组成。
我希望以排序形式迭代 Foo 对象,其中排序是针对 id 完成的。为此,我使用以下函数首先创建对象的排序版本。如您所见,对象以不区分大小写的方式排序。与我目前的做法相比,我是否有更好的方法来迭代这个对象?
c++ - std::string 到 uint64_t
如何将 a 转换为std::string
a uint64_t
?如果字符串不包含uint64_t
. 例如,这些的转换应该抛出:
或通过其他方式表明它们不是纯粹的表示。我正在使用 C++98 和 boost(包括boost::regex
)。
c++ - 以排序顺序迭代 std::vector
我从 API 收到 Foo 的向量,如下所示:
然后我写了一个名为
它遍历容器并为每个 Foo 对象提取 std::string 类型的键。
您将如何按排序顺序遍历 foos 中的 Foo 对象,其中排序是在键上完成的,并且以不区分大小写的方式进行。此外,我不想制作 foos 的排序副本,因为它的大小很大。
这是我的尝试,它有效,但我想知道它是否可以做得更好。
types - C++ 类型问题 - 切片问题?
旅游管理器.h
旅游管理器.cpp
导游是 Tour 的一个子类。它覆盖了父旅游类的显示方法。但是,当我遍历游览对象矢量并调用显示时,即使对象是 GuidedTour,它也总是调用 tour::display。
我在这里做错了什么?
我正在使用 C++98 非常感谢。
c++ - 无法编译 C++ file.cpp。C++98模式
我是 C++ 新手。当我写
我明白了
“C++98 模式下不允许基于范围的‘for’循环”
据我了解,我必须更改我的 GCC 版本(或只是模式?)。我的g++ -v
:
使用内置规范。COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.7/lto-wrapper 目标:i686-linux-gnu 配置:../src/configure -v --with-pkgversion='Ubuntu/ Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.
无法从 vim(使用 c.vim 插件)、sublime text3 以及使用gcc program.cpp
and的终端编译gcc -pedantic -std=c99 program.cpp
。
我已经下载了 gcc 4.8.1 但它不是 deb 包所以无法正确安装。还听说过 C++11、C++14、C++98、C++99。我在哪里/如何获取/安装最新版本?
vim插件c.vim的解决方案:
编辑“c.vim/plugin/c.vim”。更改此行
let s:C_CplusCFlags = '-Wall -g -O0 -c -std=c++11' " C++ compiler flags: compile, don't optimize
我添加了“-std=c++11”并且它有效。
c++ - 纯虚函数覆盖虚函数
假设给出以下代码。
类用纯-virtual 方法B
覆盖虚拟方法。这样做的目的可能是扩展在我们的案例类中不允许修改的现有类,但仍然有一个抽象类,它必须是一些其他类的基类。someMethod
A
B
根据MISRA-C++ 规则 10-3-3:代码分析器发出警告:纯虚函数覆盖非纯虚函数。
但我找不到有关警告的详细信息。上述代码的副作用是什么?这里有什么不好的做法?
更新:标准是 MISRA-C++ (C++98)
c++ - 使用索引的随机访问迭代器 - 示例
我试图澄清我关于迭代器的概念,并且在阅读Random Access Iterators
本书时指出这些迭代器可以与实例索引一起使用iterat[myIndex]
。现在我以一种简单的方式使用了带有向量的随机访问迭代器:
我想知道如何使用带有随机访问迭代器的索引以及何时需要?任何建议,将不胜感激
c++ - boost::functions 类型的空实现
我有这样的事情:
这是定义 nullStyler 的正确方法吗:
我在想我可以这样做,但是空函数抛出:
使用 styler 函数的代码可以检查空,而不是使用“空对象模式”。哪个更好?在我的 Detail 命名空间中有一个奇怪的无功能或检查是否为空?