问题标签 [c++03]

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.

0 投票
1 回答
296 浏览

c++ - 我们可以检测 C++03 中的空类吗?

可能重复:
有没有一种简单的方法来判断一个类/结构是否没有数据成员?

我们可以检测到emply classes,可能使用模板吗?

只有 C++03,不是 C++0x!

0 投票
1 回答
4387 浏览

c++ - sqrt() pow() fabs() 不起作用

我正在尝试编译我使用 sqrt pow 和 fabs 等函数的程序。我确实包含了 math.h 但由于某种原因我得到了如下错误:

我拥有的其他功能也一样:

我尝试包括但仍然相同的错误。有谁知道他们为什么不被认可?我的文件是 .cpp 而不是 .c 但它是一个 MFC 项目。

谢谢

0 投票
5 回答
2058 浏览

c++ - ISO C++03 对在函数范围内定义的结构有什么限制?

我们不允许在函数内部定义仿函数结构,因为不允许在函数模板的实例化中使用函数声明的结构。

还有其他重要的陷阱需要注意吗?例如,这会很糟糕:

0 投票
8 回答
8513 浏览

c++ - 在运行时可以检测到 C++03 和 C++11 之间的哪些差异(如果有)?

可以编写一个函数,当用 C 编译器编译时将返回 0,而当用 C++ 编译器编译时,将返回 1(简单 的解决方案#ifdef __cplusplus并不有趣)。

例如:

当然,上面的方法只有在sizeof (char)不一样的情况下才有效sizeof (int)

另一个更便携的解决方案是这样的:

我不确定这些示例是否 100% 正确,但您明白了。我相信还有其他方法可以编写相同的功能。

在运行时可以检测到 C++03 和 C++11 之间的哪些差异(如果有)?换句话说,是否可以编写一个类似的函数来返回一个布尔值,指示它是由符合标准的 C++03 编译器还是 C++11 编译器编译的?

0 投票
4 回答
1885 浏览

c++ - 如何在 C++03 中“取消引用类型”?

如何在 C++03 中获得另一种类型的“取消引用类型”?请注意,它可以是其他可取消引用的类型,例如std::vector<int>::iterator.

例如,如果我有

我怎样才能弄清楚用什么代替???

没有提升!我想知道如何自己弄清楚。)

0 投票
4 回答
617 浏览

c++ - 如何在 C++03 中伪造构造函数继承?

据我所知,您不能在 C++ 中继承构造函数。但是在某些情况下,您可能需要看起来像实例化继承类的方式与实例化它们的基类一样:

请注意,如果不是为它们的基类,则可以默认构造派生类。

我认为,选项 1 是通常所做的,但是您输入的代码没有表达任何新内容。选项 2 破坏了const正确性(并阻止您将引用用作成员),因为所有内容都必须是可分配的。

有没有一个很好的方法来解决这个问题?

编辑:C++11 很棒,但不幸的是我需要一个 C++03 解决方案。

0 投票
3 回答
8382 浏览

c++ - 在类内初始化固定大小的常量数组

考虑以下类:

是否可以arr从构造函数初始化器列表或以任何其他方式进行初始化,而不是在声明它的行(即const int arr[2] = {1,2};)?

请注意,我对使用 C++98 的方法很感兴趣!

0 投票
1 回答
129 浏览

c++ - 从重载集中检索指向最佳匹配的指针而不调用

由于各种原因,我需要使用 2 阶段构造,此外,最后一个阶段被推迟并由另一个线程执行,一些上下文:

这里的问题是我想从 ConnectionType::Init 的重载集中选择可能的最佳匹配,但是强制转换是不同的,即使某些参数是可转换的,也无法找到完美匹配。所以问题就变成了:是否有可能以某种方式从重载集中获取类型和指向最佳匹配的指针而不实际调用它?不能使用 C++03 中不可用的任何东西。

0 投票
3 回答
4567 浏览

c++ - POD 与非 POD 类类型的默认初始化

C++ 标准说(8.5/5):

默认初始化类型的对象T意味着:

  • 如果T是非 POD 类类型(第 9 条),则调用 的默认构造函数(如果没有可访问的默认构造函数T,则初始化格式错误)。T

  • 如果T是数组类型,则每个元素都是默认初始化的。

  • 否则,对象被零初始化。

使用此代码

该对象a是默认初始化的,但显然a.i不一定等于 0 。这不与标准相矛盾吗,就像IntPOD 一样,不是数组?

编辑 从 更改为classstruct所以这Int是一个 POD。

0 投票
1 回答
1632 浏览

c++ - `auto` 以前是做什么用的?

我知道在 C++11 之前,auto关键字的含义完全不同;它是一个存储类型说明符,指示具有自动存储类型(即放置在堆栈上)的对象。

理论就是这样......你将如何实际使用这个关键字(语法),为什么?此外,我还没有在 C++11 之前的实际代码中看到这个关键字;什么时候有用(什么时间段)?