问题标签 [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 投票
6 回答
1464 浏览

c++ - C++:类/结构是否在编译时初始化?

假设我Foo用构造函数编写了一个类Foo(int)。我有这段代码:

如果我在代码中使用常量调用构造函数,例如Foo(2),编译器是运行一次并存储运行时的结果,还是在运行时执行?结构/类是否仅包含 POD 数据类型是否相同?

假设它在运行时执行(我相信是这种情况),有没有办法让它在编译时运行,或者具有与运行时相同的效果?

编辑:恐怕我没有说清楚。我指的Foo(2)是代码部分,它是完全不可变的。另外,我无法使用 C++11(我正在使用 GCC 4.1 并且无法升级),因此constexpr虽然有效,但不适合我。

0 投票
6 回答
718 浏览

algorithm - 将 stl 映射转换为基于数值的键的排序列表的好算法

我有一个类型为 stl 的地图:

在哪里

如果我想返回一个对象列表(std::list< Object* >),那么按照 baseObject.ID 的顺序对其进行排序的最佳方法是什么?

我只是一直在寻找每个数字或其他东西吗?我不想将地图更改为提升地图,尽管我不一定反对做一些自包含在返回函数中的事情,比如

编辑:也许我应该遍历并将 obj->baseobj 复制到 baseobj.ID->obj 的映射中?

0 投票
1 回答
103 浏览

c++ - 如何防止从 c++03 中的类型派生?

C++11 引入了关键字final,这使得从类型派生是非法的。

有没有办法用 C++03 实现类似的结果,也许是通过制作某些成员函数private

0 投票
1 回答
58 浏览

emulation - 在 C++03 auto_ptr 为什么不调用编译器生成的 copy-ctor?

我了解auto_ptrC++03 中的工作原理。它基于这个技巧。当编写这样的代码时,该技巧使用用户定义的转换将指针从一个对象窃取到另一个对象auto_int p(auto_int(new int()));。但是,我在这方面有几个问题。

  1. 为什么不调用编译器生成的 copy-ctor?
  2. 为什么用户定义的转换优先于编译器生成的复制ctor?
  3. 是否有编译器生成的 copy-ctor 开头?
  4. 如果不是,什么语言规则禁止它?
0 投票
1 回答
2578 浏览

c++ - 如何获取析构函数的成员函数指针?

假设我有

X::~X()C++03 中的成员函数指针是什么类型以及如何获取?

我不想实际调用它,只需在 SFINAE 中使用来确定给定类型是否存在析构函数。

0 投票
1 回答
499 浏览

c++ - 默认构造函数的宏可能,等待编译器支持?

但是我的编译器还没有默认的构造函数

我可以定义一个宏DEFAULTED来代替= default吗?如果它刚刚离开该行

编译器仍会生成其默认值,还是会抱怨?

0 投票
3 回答
961 浏览

c++ - 对于频繁创建和删除的游戏对象,我应该使用什么容器?

我正在做一个游戏,我创建对象并经常杀死它们。我必须能够线性循环对象列表,下一个对象总是比上一个对象更新,因此对象的渲染将是正确的(它们将重叠)。我还需要能够将每个对象的指针存储到四叉树中,以便快速找到附近的对象。

我的第一个想法是使用std::list,但我以前从未做过这样的事情,所以我正在寻找专家对此的想法。

我应该使用什么容器?

编辑:我不只是从前面删除:对象可以按任何顺序被杀死,但它们总是被添加到列表的末尾,所以最后一项是最新的。

0 投票
2 回答
1449 浏览

c++ - 为什么联合不允许其元素具有用户定义的构造函数?

当第一个结构有构造函数时,如何使第二个结构工作?我得到错误:

编码:

我可以使用一个函数来初始化 xyz 结构,但它不会慢很多吗?更不用说:我有大量的结构,我需要创建自己的函数,其前缀为 init_xyz() 等,这并不好。有没有其他方法可以解决这个问题?

0 投票
4 回答
130 浏览

c++ - 在 C++ 库中动态阻止函数的使用

我们有一个创建为.lib.dll的库(这是一个完全用 C++ 编写的 Windows 平台的大型库)。用户可以在他们的程序或库中或他们想要使用的任何地方使用该库。

但是我想将某些功能限制为某些用户。
例如,让我们说,

  • 我们的库有 3 个函数foo()bar()hoo().
  • 用户A为这些功能付费foo()bar()并且hoo()
  • 用户B为功能bar()hoo().

因此,当我们向B提供库文件(headers/libs/dlls 等)时,

  1. 我们可以创建我们库的副本并删除 foo() 函数及其相关内容并将其发送给B
  2. 或者我们可以将整个库发送给他,并通过某种方式阻止他使用foo().

    • 第一种方法不好,因为它是一项巨大的工作,并且必须小心依赖关系。即使我们确实知道bar()并且hoo()不依赖于foo(),删除东西并给他们一个定制版本的 lib 仍然是一件令人头疼的事情,其中​​还包括更多的测试。维护将更加成问题。SVN也会很混乱。
    • 第二种方法是我猜的最好方法。但是怎么做呢?

如果Bfoo()以后为功能付费怎么办?那我就得让他用了。

我想现在你明白了这个问题。这两种方式只是我的观点,也许我对它们的结论也可能是错误的。所以,我问是否有人对此事有任何想法/建议。

0 投票
3 回答
42768 浏览

c++ - C++ 和 C 中的联合初始化

我在定义为的头文件中构建了一个使用常量的工作 C 库

我知道.raw初始化程序是仅限 C 的语法。

如何在其中定义带有联合的常量,以便我可以在 C 和 C++ 中使用它们。