65,186
社区成员




class Base{
public:
Base (): count(0) {}
int count;
};
class Derived: public Base{
public :
class Test1{
public:
Test1(){
Derived* pd = 0;
Test1* pt1 = &(pd->test1);
Derived* pDrive = (Derived* )(this - pt1);
++pDrive->count;
}
} test1;
};
int main(int argc, char **argv) {
Derived d;
std::cout<<"count="<<d.count<<std::endl; // 输出count=1
}
// Define offsetof macro
#if defined(_MSC_VER) && !defined(_CRT_USE_BUILTIN_OFFSETOF)
#ifdef __cplusplus
#define offsetof(s,m) ((size_t)&reinterpret_cast<char const volatile&>((((s*)0)->m)))
#else
#define offsetof(s,m) ((size_t)&(((s*)0)->m))
#endif
#else
#define offsetof(s,m) __builtin_offsetof(s,m)
#endif
class SimpleResponse {
int error_code;
std:string error_message;
};
以往的做法是在写一个处理函数,把二进制中的值解析出来,然后复制给各个成员。我想把这个处理函数省略掉,提高写代码速度
期望的结果是,实现一个通用的模板,然后把上面定义的类传过去,可以自动把二进制协议解析出来,填写到SimpleResponse的对象的对应成员中。
我在尝试写这个模板的时候发现一个问题:没有办法枚举类各个成员变量。
如果楼主层 给出的代码是合法C++代码,那么就可以让成员变量把自己注册到外部类的容器(比如ArrayList)中,就能实现枚举类的成员变量的功能。