c++03相关内容
假设我有vector,它的索引在vector中通过类Foo中的关键字字段进行外部排序。例如 class Foo { public: int bar; int other; float f; Foo(int _b, int _o, float _f): bar(_b), other(_o), f(_f) {} }; vector
..
我想定义一个全局容器(C++03),这是我试过的一个示例代码,它不起作用. #include #include 使用命名空间标准;向量白羊座;Aries.push_back("金牛座");//第 6 行int main() {} 编译错误: prog.cpp:6:1: 错误:'Aries' 没有命名类型 看来我可以定义一个空的全局向量,但无法填充它.看起来在 C+
..
假设我有 #include #include 使用命名空间标准;结构学生{常量字符串名称;积分等级;学生(常量字符串和名称):名称(名称){}}; 那么,我该如何保留学生的向量? int main(){矢量五;//错误 C2582: 'operator =' 函数在 'Student' 中不可用v.push_back(学生(“约翰"));} 有没有办法做到这
..
我在 C++ 中有以下类: a 类 {常量 int b[2];//其他内容如下//这是构造函数避免);} 问题是,我如何在初始化列表中初始化 b,因为我无法在构造函数的函数体内初始化它,因为 b 是 const? 这不起作用: a::a(void) :b([2,3]){//其他初始化的东西} 编辑:典型的例子是我可以为不同的实例设置不同的 b 值,但已知这些值在实例的生命周期内是恒定
..
据我所知,在 C++ 中初始化变量有三种方法. int x = 0;//类 C 初始化整数 x (0);//构造函数初始化诠释 x {0};//统一初始化 为 C++11 引入了统一初始化,以提供用于初始化不同类型变量的更统一的语法,在 C++03. 类 C、构造函数和统一初始化之间有什么区别?我应该始终使用统一初始化吗? 解决方案 首先,我建议看一下下面的谈话 由 Herb S
..
我一直认为“单一"迭代器是一个已经默认初始化的迭代器,它们可以作为类似的 sentinel 值: typedef std::vector::iterator I;我开始 = I();std::vector容器 = foo();for (I it = container.begin(), end = container.end(); it != end; ++it) {if ((start ==
..
我注意到将 char 分配给 const int& 可以编译,但将其分配给 int& 会导致编译错误. char c;内部&x = c;//编译失败const int&y = c;//还行吧 我知道这样做不是一个好的做法,但我很想知道发生这种情况的原因. 我通过寻找“分配给不同类型的引用"、“将 char 分配给 int 引用"和“常量引用和非常量引用之间的差异"来搜索答案,并遇到了许多
..
众所周知,C++ 中的内置枚举不是类型安全的.我想知道那里使用了哪些实现类型安全枚举的类......我自己使用以下“自行车",但它有点冗长和有限: typesafeenum.h: struct TypesafeEnum{//建造:上市:TypesafeEnum(): id (next_id++), name("") {}TypesafeEnum(const std::string& n):
..
我知道在 C++03 中,从技术上讲,std::basic_string 模板不需要具有连续内存.但是,我很好奇有多少现代编译器真正利用了这种自由的实现.例如,如果想使用 basic_string 来接收某些 C API 的结果(如下例所示),分配一个向量只是为了立即将其转换为字符串似乎很愚蠢. 示例: DWORD valueLength = 0;双字型;LONG errorCheck =
..
如何在编译时测试B类是否是从std::vector派生的? template结构 is_derived_from_vector {静态常量布尔值 = ????;}; 如何在编译时测试B类是否派生自模板族? 模板结构 is_derived_from_template {静态常量布尔值 = ????;}; 使用: template结构 X {};结构A:X{}结构 B : std::vect
..
在回答这个问题后,我试图找到is_complete Boost 库中的模板,我意识到 Boost.TypeTraits 中没有这样的模板.为什么Boost库中没有这样的模板?它应该是什么样子? //!检查类型是否完整模板结构 is_complete{静态常量布尔值 = ( sizeof(T) > 0 );};...//所以我可以这样使用它BOOST_STATIC_ASSERT( boost::i
..
我使用的 API 要求我将函数指针作为回调传递.我正在尝试从我的班级中使用此 API,但出现编译错误. 这是我在构造函数中所做的: m_cRedundencyManager->Init(this->RedundencyManagerCallBack); 这无法编译 - 我收到以下错误: 错误 8 错误 C3867:'CLoggersInfra::RedundencyManagerC
..
背景 Class Foo 具有用户声明的构造函数,因此没有 隐式声明的默认构造函数: struct Foo {Foo(...) {...}}; 然后在std::pair的std::vector中使用如下: std::vector> 用法 尝试向后推向量: std::vector>v;v.push_back(std::make_pair(std::string("some st
..
我有模板类 ItemContainer,它实际上是具有不同功能(如排序、索引、分组等)的整个容器系列的外观. 使用 pimpl 惯用语和显式实例化将实现细节隐藏在 cpp. 文件中.模板仅使用定义容器实际行为的一组众所周知的有限实现类进行实例化. 主模板实现了所有容器支持的常用函数 - IsEmpty()、GetCount()、Clear() 等 每个特定的容器都专门提供一些仅由
..
我正在尝试使用模板将一个类方法传递给另一个类方法,但找不到关于如何做的任何答案(没有 C++11,boost ok): 我将核心问题简化为: class Numerical_Integrator : public Generic Integrator{模板无效集成(无效(T :: * f)()){//F();//已经没有调用f()我得到错误}}类行为{void toto(){};无效进化(
..
我正在用 C++ 实现一个二项式系数(n 选择 k)函数.除了使用“正常"函数(在运行时计算)之外,这也可以使用模板元编程(当参数在编译时已知)来完成: template 结构二项式效率{static const unsigned int value = Binomialkoeffizient::value * (n-k+1)/k;};模板 struct Binomialkoeffizient{
..
我想遍历一个STL 集合,对集合中的元素成对进行操作.例如.如果设置 S={1,2,3),我需要能够检查 {1,2},{2,3},{1,3}. 因此一个非常错误的 C++ 代码如下- set>啊;无符号 sz = arr.size();代表(我,sz-1){for(j=i+1;j 我写了上面错误的代码是为了让你更好地了解我想要做什么.更好的版本(应该有效但没有)如下- set>::迭代
..
在 C++03 中,当您使用运算符 typeid 时,type_info 对象. 是否可以仅根据此结果检索给定类型的大小,例如由 sizeof 返回 运算符? 例如: std::type_info info = typeid(int);int intSize = sizeof(int);int intSize2 = info.getSize();//不存在! 问题是我们使用第三方多
..
sprintf_s 是函数 sprintf 的微软实现,他们修补了一个缺陷,添加了一个参数来获取函数被限制写入的边界值.> C++11 中引入了一个等价物:snprintf.但在这里,我们谈论的是 C++03 语法. 签名: count_char_written sprintf(char* string_out, const char* output_template, VARIADIC
..
是否有任何函数(C 或 C++)在 UNIX 平台中返回 FQDN(完全限定域名)? 解决方案 使用 getifaddrs() 获取相关框的接口,然后使用 "resolver interface" (man resolver) 查询 IP 的 FQDN-addresses 由之前的 getifaddrs() 调用返回. 不要使用gethostname() 或 命令行工具 hostna
..