利用宏定义生成getset私有变量函数

来源:互联网 发布:联通网络如何报修 编辑:程序博客网 时间:2024/06/07 14:18


利用宏定义生成getset私有变量函数。

宏的本质就是简单的文本替换,而宏里面的##则是拼接字符串 如name##_ 就表示name_

#include <iostream>using namespace std;//首先定义get、set变量的宏#define GETSETVAR(type, name)\  private: \    type name##_;\  public: \  void set_##name(const type& value) {name##_ = value;}\  const type& get_##name(){return name##_;}//定义一个class测试上面定义的宏class Test{public:  void Print()  {    cout<<"name:"<<name_<<"   age :"<<age_<<"   gender :"<<gender_<<endl;  }private:  GETSETVAR(int, age);  GETSETVAR(string, name);  GETSETVAR(string, gender);};int main(){  Test liuqiuyue;  //liuqiuyue.name_="刘秋月"; //私有变量不能访问  liuqiuyue.set_name("刘秋月");  liuqiuyue.set_age(18);  liuqiuyue.set_gender("女");  liuqiuyue.Print();  cout<<"name:"<<liuqiuyue.get_name()<<"   age :"<<liuqiuyue.get_age()<<"   gender :"<<liuqiuyue.get_gender()<<endl;  return 0;}


结果:

name:刘秋月   age :18   gender :女

name:刘秋月   age :18   gender :女


原创粉丝点击