我偶尔会看到与此类似的代码:
class A {
int b;
}
void foo() {
int* blah = &A::b;
// Other stuff.
}
Run Code Online (Sandbox Code Playgroud)
但是如何在没有类实例的情况下获取类成员变量的地址会有用吗?它有什么作用?
我有一个像这样的构造函数:
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++/CLI和.Net 4.0(托管c ++),我的IDE是visual studio 2012 RC.
我的程序几乎完全用C++/CLI编写(我只有五行本机代码),我想知道垃圾收集的效率如何,以及它是否真的对我有用.
当我启动我的程序(我正在使用某些表单)时,它需要大约3-5 MB的RAM.但是在程序运行一段时间后(相同的代码一次又一次地运行并输入新信息)它使用越来越多的内存(5-15分钟后需要大约10-25 MB RAM)和RAM的数量只会增加?
为什么是这样?这不正是垃圾收集应该阻止的吗?!
每分钟左右强制进行垃圾收集会不会很糟糕?
#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
我对shared_ptr复制构造函数有些困惑.请考虑以下两行:
它是对shared_ptr对象的"常量"引用,它被传递给复制构造函数,以便初始化另一个shared_ptr对象.
复制构造函数也应该增加一个成员数据 - "引用计数器" - 它也在所有shared_ptr对象之间共享,因为它是一个引用某个整数的引用/指针,告诉每个shared_ptr对象它们中有多少仍然存在活.
但是,如果复制构造函数尝试增加引用计数成员数据,它是否"命中"引用传递的shared_ptr的常量?或者,复制构造函数是否在内部使用const_cast运算符临时删除参数的常量?
我想比较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]不起作用.如果我想做这样的事情,那么正确的方法是什么?
我根据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和英特尔编译器.
我有一些不寻常的事情需要做.我想知道是否有人能想出一个简单的方法来进行我需要的改变.我拥有的是一个
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) 假设我在头文件中定义了以下内容:
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++ 11工具的项目,我们考虑过这个技巧,使它在C++ 03上编译.
#ifndef USE_CPP0X
# define override
#endif
Run Code Online (Sandbox Code Playgroud)
据我所知,禁止定义C++关键字,这是合法的吗?