我缺乏使用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_ */
这个想法是访问变量而不实例化类,只是包含它。
有没有什么好方法可以做到这一点?
欢呼声,
答案 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中使用等号或分号。您计划在设置类中放置什么?