小编R. *_*des的帖子

没有类实例的类成员的地址?

我偶尔会看到与此类似的代码:

class A {
    int b;
}

void foo() {
    int* blah = &A::b;
    // Other stuff.
}
Run Code Online (Sandbox Code Playgroud)

但是如何在没有类实例的情况下获取类成员变量的地址会有用吗?它有什么作用?

c++ pointers class member

2
推荐指数
1
解决办法
309
查看次数

enable_if iterator作为默认模板参数?

我有一个像这样的构造函数:

class MyClass
{
    template<class TI> MyClass(TI first, TI last);
};

template<class TI> MyClass::MyClass(TI first, TI last)
{
    ;
}
Run Code Online (Sandbox Code Playgroud)

我想只在TI是一个迭代器时启用这个构造函数(这意味着我认为TI有一个iterator_category).如何在C++ 2011中使用enable_if作为默认模板参数(在声明和定义中)?

非常感谢你.

c++ templates sfinae enable-if c++11

2
推荐指数
1
解决办法
1628
查看次数

C++/CLI - 垃圾收集的效果如何?它真的对我有用吗?

我正在使用C++/CLI和.Net 4.0(托管c ++),我的IDE是visual studio 2012 RC.

我的程序几乎完全用C++/CLI编写(我只有五行本机代码),我想知道垃圾收集的效率如何,以及它是否真的对我有用.

当我启动我的程序(我正在使用某些表单)时,它需要大约3-5 MB的RAM.但是在程序运行一段时间后(相同的代码一次又一次地运行并输入新信息)它使用越来越多的内存(5-15分钟后需要大约10-25 MB RAM)和RAM的数量只会增加?

为什么是这样?这不正是垃圾收集应该阻止的吗?!

每分钟左右强制进行垃圾收集会不会很糟糕?

.net c++ c++-cli visual-c++

2
推荐指数
1
解决办法
197
查看次数

使用std :: ref参数调用函数std :: bind(ed)

#include <functional>
#include <iostream>

struct Test
{
    void fnc(int & a) { ++a; }
};

int main ()
{
    typedef std::function<void(int)> Func;

    int i = 0;
    Test t;
    Func f = std::bind(&Test::fnc, &t, std::ref(i));
    //f(); //error C2064: term does not evaluate to a function taking 0 arguments
    f(37); //Here I am forced to pass evidently unused int
    std::cout << i;
}
Run Code Online (Sandbox Code Playgroud)

我使用它吗?

是否真的有必要传递一些随机的int?

如果是这样,为什么呢?是因为模板的魔力是有限的,我实际上必须将int传递给函数服用int OR是出于某种目的设计的吗?(例如,强迫用户不要忘记函数声明的样子如何?)

我使用vs2012

c++ c++11

2
推荐指数
1
解决办法
1823
查看次数

在shared_ptr的复制构造函数内

我对shared_ptr复制构造函数有些困惑.请考虑以下两行:

  1. 它是对shared_ptr对象的"常量"引用,它被传递给复制构造函数,以便初始化另一个shared_ptr对象.

  2. 复制构造函数也应该增加一个成员数据 - "引用计数器" - 它也在所有shared_ptr对象之间共享,因为它是一个引用某个整数的引用/指针,告诉每个shared_ptr对象它们中有多少仍然存在活.

但是,如果复制构造函数尝试增加引用计数成员数据,它是否"命中"引用传递的shared_ptr的常量?或者,复制构造函数是否在内部使用const_cast运算符临时删除参数的常量?

c++ copy-constructor shared-ptr c++11

2
推荐指数
1
解决办法
1907
查看次数

如何使用for循环比较2列表/数组与python?

我想比较ListA [0]和ListB [0] ......等.

ListA = [itemA, itemB, itemC]
ListB = [true, false, true]

for item in ListA:
    if ListB[item] == True:
        print"I have this item"
Run Code Online (Sandbox Code Playgroud)

目前的问题是[item]不是数字,因此ListB [item]不起作用.如果我想做这样的事情,那么正确的方法是什么?

python arrays list

2
推荐指数
2
解决办法
3545
查看次数

用什么来存储Unicode(UTF-16)字符串?(C++ 11)

我根据C++ 11带来的创新,即uchar16_t/u16string来提出这个问题.

我写了一个应该有多语言支持的应用程序.根据我的计划,本地化字符串将以XML格式存储为UTF-16,并使用pugixml进行检索.这些字符串既可用于GUI,也可用于生成计算结果的HTML报告.由于我已经将wchar_t/wstring理解为不赞成使用新的u16string,因此我计划使用u16string在程序中存储语言字符串.但是既然pugixml和MFC的CString都使用wchar_t作为Unicode的下划线存储类型,我现在应该忘记u16string而是直接使用wstring吗?

语言可移植性至关重要,平台可移植性无关紧要.

我使用MVS 2013和英特尔编译器.

c++ unicode c++11

2
推荐指数
1
解决办法
940
查看次数

如何改组多个相关数组?

我有一些不寻常的事情需要做.我想知道是否有人能想出一个简单的方法来进行我需要的改变.我拥有的是一个

public class Report
    { 
        public string[] Text { get; set; }
        public string[] Image { get; set; }
        public string[] Explanation { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

报告类可以包含任意数量的文本,图像和说明,每个数组的大小始终是一致的,但每个报告实例可能不同.

我需要做的是能够以随机顺序对数组元素进行排序.例如,我可能有

Report.Text[0] = "text0";
Report.Text[1] = "text1";
Report.Text[2] = "text2";
Report.Image[0] = "img0";
Report.Image[1] = "img1";
Report.Image[2] = "img2";
Report.Explanation[0] = "exp0";
Report.Explanation[1] = "exp1";
Report.Explanation[2] = "exp2";
Run Code Online (Sandbox Code Playgroud)

然后排序

Report.Text[0] = "text2";
Report.Text[1] = "text0";
Report.Text[2] = "text1";
Report.Image[0] = "img2";
Report.Image[1] = "img0";
Report.Image[2] = "img1";
Report.Explanation[0] = "exp2";
Report.Explanation[1] = …
Run Code Online (Sandbox Code Playgroud)

c# c#-4.0

1
推荐指数
1
解决办法
245
查看次数

命名空间对我没有意义

假设我在头文件中定义了以下内容:

namespace MyNamespace
{
   Class global_c;
}
Run Code Online (Sandbox Code Playgroud)

然后我在源文件中执行此操作:

namespace MyNamespace
{
   void MyClass::Function( )
   {
       ::global_c.DoSomething( );
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我只做global_c.DoSomething(); global_c结果是编译器未定义的.但如果我添加'using namespace MyNamespace;'它编译得很好 到文件的顶部它也可以正常工作.

由于global_c与"MyClass"位于同一个命名空间中,为什么不能仅仅因为"::"被添加到它的前面来解决它?

c++ namespaces

1
推荐指数
1
解决办法
89
查看次数

在C++ 03中定义覆盖是否合法

我们有一个使用许多C++ 11工具的项目,我们考虑过这个技巧,使它在C++ 03上编译.

#ifndef USE_CPP0X
#    define override
#endif
Run Code Online (Sandbox Code Playgroud)

据我所知,禁止定义C++关键字,这是合法的吗?

c++ c++11 c++03

1
推荐指数
1
解决办法
552
查看次数