首页 > TAG信息列表 > member-variables

c-静态const成员初始化中的sizeof

我有这样的代码: class A { public: unsigned long a; static const unsigned long b = sizeof(a); // "error C2327: 'A::a' : is not a type name, static, or enumerator" in VC++ }; 我在VC中出现编译器错误,在IAR中没有错误. 哪个编译器是正确的,C Standart对此有何

在C => Compiler bug或代码bug中抑制未使用的变量警告?

目前,我使用以下函数模板来抑制未使用的变量警告: template<typename T> void unused(T const &) { /* Do nothing. */ } 但是,当从Linux移植到cygwin时,我现在在g 3.4.4上遇到编译器错误(在linux上我是3.4.6,所以这可能是一个bug修复?): Write.cpp: In member function `void* W

如何在PHP中实现只读成员变量?

尝试更改时,抛出异常.解决方法:我认为对于类属性,解决方案是: >不要使用您感兴趣的名称定义属性 >使用magic __get方法使用“假”名称访问该属性>定义__set方法,以便在尝试设置该属性时抛出异常.>有关魔术方法的更多信息,请参阅Overloading. 对于变量,我认为不可能有一个只读变量,当

c – 返回成员变量的引用是不好的做法?

以下据说比公共成员有第一个/第二个更好.我相信这几乎一样糟糕.如果您正在提供一种方法来访问课外的私有变量,那么重点是什么?功能不应该是 T First(); void(or T) First(const T&) 样品: // Example 17-3(b): Proper encapsulation, initially with inline accessors. Later // i

将C Lambda存储在成员变量中以用作回调?

我正在尝试实现一个将Lambda回调作为参数的c函数.问题是,回调是从同一个(被调用的)类中的另一个函数异步启动的.因此,我需要将Lambda存储在一个成员变量中,以便可以通过需要启动回调的异步函数来访问它. 我尝试了所有我能想到的方法来使用成员变量声明,设置和调用Lambda,但代码总是

c – 在成员变量之后加上一个括号来初始化?

我看到人们在初始化列表中的成员变量后放置一个括号.我想知道为什么人们这样做? 例如,我在头文件中有一个STL容器: class A{ public: A(); ... private: vector<string> v; } 在源文件中: A::A() : v() {} 我的问题是什么是v()以及为什么人们这样做,因为看起来v看起