有没有办法检查结构中是否存在成员?

时间:2012-06-28 16:40:42

标签: c++ struct member

  

可能重复:
  How to detect whether there is a specific member variable in class?

我正在为C ++库添加功能。一个派上用场的东西是检查一个结构中是否存在某个成员(它存在取决于库版本 - 遗憾的是库中没有“version”参数)。

以下是我想要做的简化示例:

struct options {
    int option1;
    std::string option2;
    float option3; // might be included or not

    options();
    void random_method();
}

options::options() {
    option1 = 1;
    option2 = "foo";

    if( EXISTS(option3) ) { // Pseudo-Code -> can I do that at all?
        option3 = 1.1;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在父结构中实现纯虚函数,让孩子实现它。

struct Parent
{
  virtual bool has_option(OPTION) const = 0;
};

struct Car : public Parent
{
  bool has_option(OPTION op) const
  {
     bool result = false;
     if (op == MOON_ROOF)
     {
         result = true;
     }
     return result;
   }
};