C ++宏整数和对象定义

时间:2013-11-17 21:33:17

标签: c++ macros header definition

我缺乏使用C ++的经验,我正在尝试创建一个设置文件,将所有定义和全局变量放在那里,因此我的项目的类可以从那里访问那些值。 Settings.h文件可能如下所示:

#ifndef SETTINGS_H_
#define SETTINGS_H_

#define COLOR_BLUE = Vec3b(255, 0, 0);
#define COLOR_GREEN = Vec3b(0, 255, 0);
#define NOT_SET = 0;
#define IN_PROCESS = 1;
#define SET = 2;
#define FGD_PX = 255;
#define BGD_PX = 127;

#include <cv.h>
using namespace cv;

class Settings {
};
#endif /* SETTINGS_H_ */

这个想法是访问变量而不实例化类,只是包含它。

有没有什么好方法可以做到这一点?

欢呼声,

3 个答案:

答案 0 :(得分:2)

#include <cv.h>
using namespace cv;

#ifndef SETTINGS_H_
#define SETTINGS_H_

#define COLOR_BLUE Vec3b(255, 0, 0)
#define COLOR_GREEN Vec3b(0, 255, 0)
#define NOT_SET 0
#define IN_PROCESS 1
#define SET 2
#define FGD_PX 255
#define BGD_PX 127

class Settings {
public:
   static int var1;
   static float var2;
   static short var3;
};

// initialization
int Settings::var1 = SET;
float Settings::var2 = 3.14;
short Settings::var3 = BGD_PX;

#endif /* SETTINGS_H_ */

用法:

int tmp = Settings::var1;

答案 1 :(得分:2)

常量要么进入枚举,要么进入静态反射。清单常量通常保留用于编译器类型选项:

#ifndef SETTINGS_H_
#define SETTINGS_H_

class Settings {
public:
   static const vec3b color_blue;
   static const vec3b color_green;
   enum statics {
         NOT_SET = 0,
         IN_PROCESS = 1,
         SET = 2,
         FGD_PX = 255,
         BGD_PX = 127
   };

};

vec3b Settings::color_blue(255, 0, 0);
vec3b Settings::color_green(0, 255, 0);

#include <cv.h>

#endif

答案 2 :(得分:0)

你不应该在#defines中使用等号或分号。您计划在设置类中放置什么?