码迷,mamicode.com
首页 > 其他好文 > 详细

奇技淫巧1

时间:2018-05-18 00:25:23      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:ble   ##   win   gety   int   setvalue   col   #define   输出   

一、宏定义简化类变量的Set,Get函数:

#define vtkSetMacro(name,type) \
virtual void Set##name (type _arg) \
{ \
if (this->name != _arg) \
{ \
this->name = _arg; \
} \
}

#define vtkGetMacro(name,type) \
virtual type Get##name () { \
return this->name; \
}

通过##连接字符串的作用,该宏在类中被展开为与name相关的函数,

在类中使用该宏时,参数name为函数需要设置的变量名,type为该变量的类型。

例:

class myWindow
{
public:

vtkSetMacro(value,int);

vtkSetMacro(x,double);

vtkGetMacro(y,double);


private:

int value;

double x;

double y;

};

则该类编译时自动展开为:

class myWindow 
{
public:
virtual void Setvalue (int _arg) { 

  if (this->value != _arg) 
  { 
  this->value = _arg; 
  } 
}

virtual void Setx (double _arg) { 

  if (this->x != _arg) 
  { 
  this->x = _arg; 
  } 
}

virtual double Gety () { 
  return this->y; 
}


private:

int value;

double x;

double y;

};

上面所示为基本类型的set,get函数示例,通过改写宏定义,可以扩展其他应用情况,

只要函数为简单的赋值以及返回值,输入,输出语句,都可以通过该方法简化,代码较为简洁,避免大量重复编码。

学习自vtkSetGet.h

转载请标明出处

奇技淫巧1

标签:ble   ##   win   gety   int   setvalue   col   #define   输出   

原文地址:https://www.cnblogs.com/arunz/p/9053839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!