class CustomFoo { virtual void do_stuff()=0; }; class Foo: CustomFoo { void do_staff() {} final; }; class FooWrapper { vector<CustomFoo*> foos; CustomFoo* operator->() {return foo[0];} }; void main(){ FooWrapper wrapper; wrapper.foos.push_back(new Foo()); wrapper->do_staff(); }
Standard input is empty
prog.cpp:8:24: error: ‘final’ does not name a type
void do_staff() {} final;
^~~~~
prog.cpp:14:3: error: ‘vector’ does not name a type
vector<CustomFoo*> foos;
^~~~~~
prog.cpp: In member function ‘CustomFoo* FooWrapper::operator->()’:
prog.cpp:16:35: error: ‘foo’ was not declared in this scope
CustomFoo* operator->() {return foo[0];}
^~~
prog.cpp:16:35: note: suggested alternative: ‘Foo’
CustomFoo* operator->() {return foo[0];}
^~~
Foo
prog.cpp: At global scope:
prog.cpp:20:11: error: ‘::main’ must return ‘int’
void main(){
^
prog.cpp: In function ‘int main()’:
prog.cpp:23:11: error: ‘class FooWrapper’ has no member named ‘foos’
wrapper.foos.push_back(new Foo());
^~~~
prog.cpp:23:34: error: invalid new-expression of abstract class type ‘Foo’
wrapper.foos.push_back(new Foo());
^
prog.cpp:6:7: note: because the following virtual functions are pure within ‘Foo’:
class Foo: CustomFoo {
^~~
prog.cpp:3:17: note: ‘virtual void CustomFoo::do_stuff()’
virtual void do_stuff()=0;
^~~~~~~~
prog.cpp:24:10: error: ‘CustomFoo* FooWrapper::operator->()’ is private within this context
wrapper->do_staff();
^~
prog.cpp:16:14: note: declared private here
CustomFoo* operator->() {return foo[0];}
^~~~~~~~
prog.cpp:24:12: error: ‘class CustomFoo’ has no member named ‘do_staff’; did you mean ‘do_stuff’?
wrapper->do_staff();
^~~~~~~~
do_stuff
Standard output is empty