Правильно ли реализовать дважды унаследованный объект?

0

Я пытаюсь использовать двойное наследование, чтобы объявить более сложный объект, как сумму двух более простых. Однако, когда я пытаюсь сделать это следующим образом:

class common_cfullr
{
public:
  double core;
  double thr;
  double thrres;
  common_cfullr(double Core, double Thr, double Thrres){
    core=Core;
    thr=Thr;
    thrres=Thrres;
  };
  ~common_cfullr(){};
  common_cfullr() :
    core(0.0),
    thr(0.0),
    thrres(0.0)
  {}
};

class common_cfull
{
 public:
  int nelec;
  int ms2;

  common_cfull (int  Nelec,
  int  Ms2){
    nelec      =Nelec;  
    ms2        =Ms2;    
   };
  ~common_cfull(){};
  common_cfull() :
    nelec(0),
    ms2(0){}
};

///Structure inheritance
class  common :
  public common_cfullr,
  public common_cfull
{public:
  common(){};
  ~common(){};
};

int main(int argc, char** argv)
{
  common cmn();
  cmn.nelec=0;

  return 0;
}

Я получаю сообщение об ошибке от компилятора. Как правильно использовать двойное наследование для этих целей?

Любой sugestion будет очень оценен.

  • 3
    Если вы получите сообщение об ошибке, было бы мило с вашей стороны поделиться тем, что он сказал!
  • 1
    common cmn(); это самый неприятный разбор (гугл это). Вы должны использовать common cmn;
Показать ещё 1 комментарий
Теги:
inheritance

1 ответ

2
Лучший ответ

(На основании комментария Нейка Кирка.) Изменение common cmn(); к common cmn; делает ваш код скомпилированным без ошибок.

При компиляции с clang++ примечание, выпущенное компилятором, также сообщает вам следующее:

t.cc:48:13: warning: empty parentheses interpreted as a function declaration
      [-Wvexing-parse]
  common cmn();
            ^~
t.cc:48:13: note: remove parentheses to declare a variable
  common cmn();
            ^~
  • 0
    Большое спасибо за помощь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню