看到了C++11,看到了XE7的64位,想实现下面方便的类成员初始化,失望.
- 一、64位用法
clang3,64位编译器,不支持中文变量名,编写代码提示没有32位快,风格简单不用写单独的赋值语句函数,一步到位,c#,java都支持的写法。
class TTableNames64 { public: String TB1 = "TB1"; String TB2 = "TB2"; // String 变量a; // error 汉字变量不识别 } TableNames64;
//使用只能用一种方式,成员变量
Caption = TTableNames64::TB1;//error invalid use of non-static data member 'TB1' Caption = TableNames64.TB1;
- 二、成员变量初始化赋值法
32位不能想64位那样支持成员变量直接初始化语法不支持。
采用成员变量,构造函数初始化赋值方法,兼容64、32。
class TTableNames3264 { public: String TB1; // = "TB1"; String TB2; // = "TB2"; TTableNames3264() { TB1 = "TB1"; TB2 = "TB2"; } } TableNames3264; //使用只能用一种方式,成员变量 TTableNames3264::TB1; // error invalid use of non-static data member 'TB1' this->Caption = TableNames3264.TB1;
- 三、静态成员法
static变量 ,必须用下面的赋值语法。32、64位都支持的语法。
class TTableNamesStatic { public: static String TB1; // = "TB1"; static String TB2; // = "TB2"; } tableNamesStatic; String TTableNamesStatic::TB1 = "ww"; String TTableNamesStatic::TB2 = "ww";
使用的时候 下面2中方式都可以
Caption = TTableNames::TB1;
Caption = tableNames.TB1;