Я пытаюсь использовать двойное наследование, чтобы объявить более сложный объект, как сумму двух более простых. Однако, когда я пытаюсь сделать это следующим образом:
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 будет очень оценен.
(На основании комментария Нейка Кирка.) Изменение 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();
^~
common cmn();
это самый неприятный разбор (гугл это). Вы должны использоватьcommon cmn;