static-members相关内容
当前,我正在一个C ++项目中,我计划在其中嵌入Lua脚本.出于这个原因,某些类需要导出到Lua,而我想使其更加方便,因此我创建了一个模板类: template class ExportToLua { public: ExportToLua() {} ~ExportToLua() {} private: st
..
1)如果我没记错的话,C ++标准保证单个转换单元中的静态变量按其定义顺序进行初始化.我对以下代码片段感到困惑: extern int n; int k = n; int n = 2; extern int n;是声明,而不是定义,因此k是在n之前定义的,但是GCC,Clang和MSVC都向我显示了在初始化全局变量之后的k == 2.对我来说,目前尚不清楚如何在int k = n;之后为
..
我有一个像这样的Java类: public class Foo { public static int counter = 0; public void bar(int counter) { Foo.counter = counter; } } FindBugs警告我有关通过实例方法bar写入静态字段counter的信息.但是,如果我将代码更改
..
在方法内声明局部内部类时,为什么包含最终的静态String或int是合法的,而包含其他对象却不合法? 例如: class Outer { void aMethod() { class Inner { final static String name = "compiles"; final static int ctr = 10; // compi
..
请考虑以下代码段: #include 使用命名空间std; class p { public: int * q; p() { q =新int(100); } 〜p(){ delete q; } }; 静态p * p1 =新p(); 静态p p2; int main(){ //您的代码在此处 std :: cout
..
我要求展示如何为特殊记录器的旧栗子做类似单例的解决方案。我仍然不遗余力地指出不做这种事情的原因。 这样做,我有一个静态的类成员意外消失了。 p> 使用此类声明: epiLogger.py: 导入日志 类epiLogger(): _initialized = {} _finalised = {} def __init __(self,name): self
..
我使用的是log4net,我们的代码中包含很多内容: 公共类Foo { 私有静态只读ILog日志= LogManager.GetLogger(typeof(Foo)); .... } 一个缺点是,这意味着我们重新粘贴整个10个单词的部分,然后时不时有人忘记更改类名。 log4net常见问题解答也提到了这种替代可能性,甚至更冗长: 公共类Foo { priv
..
好吧……在目标C中,您可以使用“ new this()”从基类的静态方法中创建一个子类,因为在静态方法中,“ this”是指该类,而不是实例。当我第一次发现它并且经常使用它时,这真是一个非常酷的发现。 但是,在C#中不起作用。 所以...有人知道我如何从静态基类方法中“新建”一个子类吗? 类似这样的事情…… 公共类MyBaseClass { 字符串名称; 公共静态
..
我有一段简单的C ++代码,其中我通过专门化模板定义了模板和全局对象。对象构造函数访问专用模板中的静态成员。但事实证明,静态成员当时尚未初始化。但是对于本地对象(在函数主体中定义),它可以工作。我很困惑... 我的c ++编译器是:g ++(Ubuntu 5.4.0-6ubuntu1〜16.04.4)5.4.0 20160609 //////////////////////// 模
..
关于何时调用普通类的静态成员的构造函数,有很多信息。但是,我看到一些有关模板类的奇怪行为。 以下程序的输出应该是什么? (请注意,我使用printf可以避免任何带有std :: cout的静态初始化订单惨败的并发症。) #include B类{ public: B(const std :: string& s){printf(“你好,我是%s\n的B
..
我在使用简单的C ++类时遇到了奇怪的行为。 classA.h A类 { public: A(); 〜A(); 静态常量std :: string CONST_STR; }; classA.cpp #include“ classA.h” #include const std :: string A :: CO
..
我正在尝试使用向上,向右和向前的预定义静态常量创建矢量类,因为在所有情况下它们都应该相同。 我正在尝试执行以下操作: 模板 vec3类 { public: vec3(T x = 0,T y = 0,T z = 0): x(x), y(y) , z(z) { } static const vec3
..
我想将成员函数用作回调(使用此函数): glfwSetCursorPosCallback(window,(GLFWcursorposfun)(MyClass :: mouseButtonChanged)); 我知道这是不可能的,因为我需要 MyClass的实例调用方法 mouseButtonChanged 。 但是我该怎么办? 解决方案 您可以使用 g
..
我有一个像这样的昂贵函数: pub fn get_expensive_value(n:u64):u64 { 让ret = 0; for 0 .. n { //昂贵的东西 } ret } 并且使用相同的参数会经常调用它。它是纯的,这意味着它将返回相同的结果并可以利用缓存。 如果这是一种struct方法,我会在该结构中添加一个成员,该成员充当缓存,但不
..
以下代码生成对“ Test :: color” 的未定义引用。 #include 结构颜色{ int r,g,b; }; void printColor(Color color){ //打印颜色 } class Test { static constexpr Color color = {242 ,34,4}; public: vo
..
我知道这个问题已经问过几次了,我一直在阅读以下文章: 初始化模板化类的静态成员 如何声明/定义/初始化静态成员模板类的变量作为类的静态成员变量? 但是,我仍然在努力将所有有关模板,专业化,静态数据成员的定义和声明的内容。 我所拥有的类似于: template struct A { static std :: array
..
由于标准的困扰,C ++中的静态类成员对我造成了一些困惑: 9.4.2静态数据成员 [class.static.data] 在其类定义中声明静态数据成员不是定义... 但是在其声明时(例如,在 constexpr 中需要初始化 constexpr ) 由于对constexpr的限制,我实际上已经忘记了在类外定义静态成员的必要条件,直到尝试访问静态constexpr数组为止。
..
当静态成员变量在类中声明为私有时,如何定义它? 假设我有以下类声明 class static_demo { private: static int a; public: static int b; void set(int x,int y) { a = x; b = y; } void show() { cout
..
我想知道静态成员变量通常是如何在C ++等语言中实现的,以及它们的使用是否会影响实例化对象的大小。 我知道一个静态成员由该类的所有实例共享,但是如何共享?如果它影响对象的大小,那么有10个静态变量会增加大于1的大小吗? 我问,因为我可以想到实现它的两种方式: 向每个对象添加指向静态数据的指针,类似于某些实现为虚拟函数表添加指针的方式 静态数据就像全局变量一样直接引用,偏移量由链
..
在C ++中初始化 static 数据成员的正确方法是什么?我也对它从C ++ 98到C ++ 11到C ++ 14的变化感兴趣。 这里是一个例子: // bufferedOutput.h 类BufferedOutput { //静态成员声明。 静态长字节数; }; // bufferedOutput.cpp long BufferedOutput :: by
..