c++03相关内容

是否可以在 C++03 中定义等效的“移动和交换习语"

我必须使用 C++03 并且我有一个不可复制的对象(例如,持有一个资源). 我需要使用 move-and-swap 语义来做类似的事情并避免复制: MyClass returnMyClass(void){我的课堂温度;//用实际数据填充 'temp' 成员返回温度;}int main(void){MyClass 测试;测试 = returnMyClass();//需要避免复制} 是否可以 ..
发布时间:2021-06-04 18:30:45 C/C++开发

C ++ std:.auto_ptr或std :: unique_ptr(以支持多个编译器,甚至是旧的C ++ 03编译器)?

我正在尝试更新一些C ++代码,我想朝着更现代的代码(c ++ 11)迈进,但是我仍然需要使用一些较旧的编译器(与c ++ 03兼容)来编译代码.,因为受支持的平台限制. 我知道在C ++ 11编译器中已弃用std :: auto_ptr,但是由于较旧的编译器支持,我不能仅将它们替换为std :: unique_ptr. 是否有一种好的做法来处理这种“旧的编译器支持,但开始转向C ++ ..
发布时间:2021-04-20 18:40:15 C/C++开发

多种类型的模板专业化

标题有点含糊. 让我们说我有一个定义为的模板: 模板无效foo(int x);模板void foo(int x);模板void foo(int x);模板无效foo(int x);... 内部 foo()和 foo()都完全相同.唯一的要求是 T 为8位类型. ..
发布时间:2021-04-19 20:59:39 C/C++开发

是否可以保证静态类成员在调用`main`之前被初始化?

是否可以保证在调用 main 之前初始化静态类成员? 解决方案 我认为否: [C ++ 03:3.6.2/3]: 是否由动态初始化来实现定义(8.5、9.4、12.1、12.6.1)名称空间范围对象的在 main 的第一条语句之前完成.如果初始化推迟到 main的第一条语句之后的某个时间点,它应在首次使用与要初始化的对象相同的转换单元中定义的任何函数或对象之前发生. 嗯,真的吗 ..
发布时间:2021-04-19 20:50:10 C/C++开发

为什么PRIu64在此代码中不起作用?

按照此答案,我尝试打印 uint64_t ,但是它给了我一个错误: 错误:应在"PRIu64"之前输入“)" 以下是显示我要执行的操作的最小代码: #define __STDC_FORMAT_MACROS#include#includeX类{X() {uint64_t foo = 0;printf(“%07" PRIu64“:",foo) ..
发布时间:2021-04-19 19:34:47 C/C++开发

c ++ 03使用多个参数初始化对象的数组

这可能是一个简单的问题,但我正在尝试使用参数化构造函数初始化对象数组.例如: A类{上市:int b,c,d;A(int i,int j);};无效A :: A(int i,int j){d = rand()b = 2 * i;c = 3 * j;}void main(){A [50];/*使用构造函数初始化50个对象*/} 我已经尝试过矢量初始化,如链接,则不可能手动输入50个初始化值. ..
发布时间:2021-04-09 20:45:42 C/C++开发

有条件地从两个类之一继承

可能重复: 在编译时动态生成结构 我现在正面临一种情况,我希望派生类根据条件(在C ++ 03中)从Base1或Base2继承.这意味着,我想实现类似以下内容: // pseudo-C++ code class Derived : public if(condition) Base1 // inherit from Base1, if condition is true ..
发布时间:2020-11-28 00:13:54 C/C++开发

确保派生类构造函数必须调用特定的基类方法

在C ++(03)类中,我有一个成员变量,在对象构造过程中必须为该变量赋一个值.但是,只有派生类可以计算所需的值.如本博文所述确实C ++要求您从其派生类中初始化基类成员吗?,我知道派生类不能初始化基类成员,但是分配对我来说已经足够. 因此,我在基类中提供了一种分配值的方法,但是我无法弄清楚如何强制派生类对其进行调用.下面的示例代码说明了这一点. class Base { public ..
发布时间:2020-11-27 23:05:27 C/C++开发

C ++代码生成:为函数指针创建工厂

我的(非成员)函数列表越来越长,而且还在不断增长,我需要在运行时从此列表中选择一个函数(基于命令行参数).目前,我使用工厂函数执行此操作,该函数接受字符串(函数名称)并返回指向该函数的指针.但是,这意味着每次添加新功能(这既烦人又违反 DRY原理). 我想通过解析函数列表的源代码以某种方式生成工厂函数(灵感来自阅读实用程序员(昨晚).但是,似乎很难正确地解析C ++,我不想让我的项目仅依赖于 ..
发布时间:2020-11-11 19:55:18 C/C++开发

可以在C ++ 03中有条件地声明friend类吗?

仅当某些(编译时)条件为true时,我才想声明一个朋友类.例如: // pseudo-C++ class Foo { if(some_compile_time_condition) { friend class Bar; } }; 我在互联网上找不到任何解决方案.我仔细研究了在编译时动态生成结构的所有答案.他们中的许多人都使用C ++ 11 std::co ..
发布时间:2020-11-10 23:16:44 C/C++开发

C ++ 03链接器“已经定义的符号”没有出现在中间文件上

我在Visual Studio 2005上的一个大型项目遇到了问题,我在那儿用光了所有的想法。 我什至不能放一个工作代码段因为我不知道有什么关系,但是我会尝试: 我需要使项目中的每个.cpp文件都有其自己的ID号,并创建一个实例知道该ID的对象(可全局访问)的标识符。 我遵循了该线程上可接受的答案的帮助如何在c ++中管理文件唯一ID ,并使其在沙盒环境中正常工作。 添加文件 ..
发布时间:2020-10-10 23:15:30 C/C++开发

常量和重新解释强制转换是否在编译时发生?

我读到 static_cast 在编译时发生,而 dynamic_cast 在运行时发生,因此比 static_cast 。 dynamic_cast 可以返回空ptr(与指针一起使用时),否则会抛出错误的强制转换异常。我的问题是 reinterpret_cast 和 const_cast 会在编译时或运行时发生吗?我认为解释转换在运行时发生,因为它的行为类似于 dynamic_cast ,指示转 ..
发布时间:2020-09-29 23:01:43 C/C++开发

当新大小小于当前大小时,std :: vector :: resize()是否会重新分配?

可能重复: std :: vector向下调整大小 如果我 resize()和 std :: vector 的大小小于其当前大小,该向量是否有可能分配新的内存? / p> 出于性能原因,这对我来说很重要。 解决方案 不, 调整大小将永远不会重新分配。 如果容器缩小,所有未删除的元素的迭代器,指针和引用在调整大小后仍然有效,并且引用的是调用前它们所引用的相同元素。 ..
发布时间:2020-09-27 22:38:57 C/C++开发

C ++ 98/03 std :: is_constructible实现

我的爱好库的基本组件必须与C ++ 98和C ++ 11编译器一起工作。为了学习和娱乐,我创建了几种类型支持功能的C ++ 98实现(例如 enable_if ,有条件的 , is_same , is_integral 等...),以便在不支持C ++ 11时使用它们 但是当我实现 is_constructible 时,我陷入了困境。在没有C ++ 11支持的情况下,是否可以使用某种模板魔术 ..
发布时间:2020-09-27 03:53:07 C/C++开发

找不到C ++ Boost文件

我正在尝试使用boost中的variant,并且收到此错误: 严重错误C1083:无法打开包含文件:'boost/variant.hpp':否 这样的文件或目录 我已将文件包含在项目属性中. 在参考目录和图书馆目录中,我也尝试过使用 "... \ lib" ".... \ stage \ lib" 我还在包含目录中尝试过: "... \ boost_1_68_ ..
发布时间:2020-09-22 06:33:47 C/C++开发