#include <iostream>
using namespace std;
class AbsBase
{
virtual void init() = 0;
virtual void work() = 0;
};
class AbsInit : public virtual AbsBase
{
public:
int n;
AbsInit(int x)
{
n = x;
}
void init() { }
};
class AbsWork : public virtual AbsBase
{
void work() { }
};
class NotAbsTotal : public AbsInit, public AbsWork
{
public:
int n;
NotAbsTotal(int x){
n = x;
}
}; // Nothing, both should be defined
int main() {
NotAbsTotal foo();
cout << foo.n << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEFic0Jhc2UKewogICAgdmlydHVhbCB2b2lkIGluaXQoKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgd29yaygpID0gMDsKfTsKCmNsYXNzIEFic0luaXQgOiBwdWJsaWMgdmlydHVhbCBBYnNCYXNlCnsKcHVibGljOgogICAgaW50IG47CiAgICBBYnNJbml0KGludCB4KQogICAgewogICAgICAgIG4gPSB4OwogICAgfQogICAgdm9pZCBpbml0KCkgeyAgfQp9OwoKY2xhc3MgQWJzV29yayA6IHB1YmxpYyB2aXJ0dWFsIEFic0Jhc2UKewogICAgdm9pZCB3b3JrKCkgeyAgfQp9OwoKY2xhc3MgTm90QWJzVG90YWwgOiBwdWJsaWMgQWJzSW5pdCwgcHVibGljIEFic1dvcmsKewoJcHVibGljOiAKICAgIGludCBuOwogICAgTm90QWJzVG90YWwoaW50IHgpewogICAgICAgIG4gPSB4OwogICAgfQoKfTsgICAgLy8gTm90aGluZywgYm90aCBzaG91bGQgYmUgZGVmaW5lZAoKCmludCBtYWluKCkgewogIE5vdEFic1RvdGFsIGZvbygpOwogIGNvdXQgPDwgZm9vLm4gPDwgZW5kbDsKCn0K
prog.cpp: In constructor 'NotAbsTotal::NotAbsTotal(int)':
prog.cpp:31:23: error: no matching function for call to 'AbsInit::AbsInit()'
NotAbsTotal(int x){
^
prog.cpp:15:5: note: candidate: AbsInit::AbsInit(int)
AbsInit(int x)
^
prog.cpp:15:5: note: candidate expects 1 argument, 0 provided
prog.cpp:11:7: note: candidate: AbsInit::AbsInit(const AbsInit&)
class AbsInit : public virtual AbsBase
^
prog.cpp:11:7: note: candidate expects 1 argument, 0 provided
prog.cpp:11:7: note: candidate: AbsInit::AbsInit(AbsInit&&)
prog.cpp:11:7: note: candidate expects 1 argument, 0 provided
prog.cpp: In function 'int main()':
prog.cpp:40:15: error: request for member 'n' in 'foo', which is of non-class type 'NotAbsTotal()'
cout << foo.n << endl;
^