利用宏定义了类中关于变量的set和get方法
宏的本质是替换,就是编译的时候,使用宏的地方替换成宏定义代码
//利用宏定义类中的属性方法
#define ATTRIBUTE_MEMBER_FUNC(argType, arg)\
public:\
void set_##arg(const argType& v) {\
arg = v;\
}\
argType get_##arg() {\
return arg;\
}
#pragma once
#include "MarcoDef.h"
#include <string>
class MyBook {
public:
MyBook();
~MyBook();
ATTRIBUTE_MEMBER_FUNC(std::string, isbn)
ATTRIBUTE_MEMBER_FUNC(int, num)
private:
std::string isbn;
int num;
};
MyBook::MyBook() {
}
MyBook::~MyBook() {
}
int main(int argc, char *argv[]) {
MyBook myBook;
myBook.set_isbn("ISBN0012584");
std::string strISBN = myBook.get_isbn();
printf("myBook.get_isbn() = %s\n", strISBN.c_str());
myBook.set_num(199);
int num = myBook.get_num();
printf("myBook.get_num() = %d\n", num);
return 0;
}
运行结果: