c++11提供了新的特性,可以初始化一些類或者結構成員變數,尤其某類例項化的變數的初始化,下面介紹一種在c++98中也可以初始化類成員變數的通用方法:
先上**
#include
#include
template
struct ca
const t operator(int idx) const
int length;
int item_size;
};struct cb
;int main()
這段**一定編譯不過,因為
main.cpp:23:16: error: expected identifier before numeric constant
ca ca(10);
^~main.cpp:23:16: error: expected ','
or'...' before numeric constant
main.cpp: in function
'int main()':
main.cpp:29:39: error: invalid types '[int]'
forarray subscript
std::cout << "cb[5] = "
<< cb.ca[5] << "\n";
^
在c++11中,可通過
caca =10;
來解決這一問題。下面介紹另外一種方法,就是通過模板初始化來解決,在c++98中也能相容
#include
#include
template
<
typename t=bool,
int init_array_size = 0>
struct ca
ca(int init_size):length(0), item_size(init_size){}
const t operator(int idx) const
int length;
int item_size;
};struct cb
;int main()
主要的改動在
ca template中加入init_array_size 模板引數
ca的無引數建構函式的實現
成員變數ca的型別改為ca
C 呼叫lua函式的一種通用辦法
在c 中呼叫lua函式的一般方式如下 如果有很多個指令碼函式需要呼叫,按上面的方式就要寫很多個與之對應的c 函式,當然也可以利用c 的過載,把函式名作為引數,每種引數組合實現乙個過載函式,則上面的 可以改為 如果有兩個不同的lua函式,它們的引數是一樣的,則可以共用同乙個common call,但是...
C 類標頭檔案不暴露私有變數的一種寫法
在類的標頭檔案中不暴露私有變數,目的一般有兩個 1.提供給別人的dll對應的標頭檔案中,不希望在標頭檔案中暴露私有變數的名稱 2.因為私有變數的型別需要包含另乙個標頭檔案,所以不希望在標頭檔案中包含其它標頭檔案 一般可以用下面的方法來隱藏私有變數。twebsocketserver.h class t...
計算結構體成員偏移位址的一種方法
同事說起的 個人想了一下 還真沒什麼思路 後學習了一下 附 於下 很簡便的一種方式 int tmain int argc,tchar argv mystruct st mystruct 0 int address int st m test printf lld r n st return 0 一直...