Undefined reference to ‘vtable for xxx’

One or more of your .cpp files is not being linked in, or some non-inline functions in some class are not defined. In particular, takeaway::textualGame()‘s implementation can’t be found. Note that you’ve defined a textualGame() at toplevel, but this is distinct from a takeaway::textualGame() implementation – probably you just forgot the takeaway:: there.

What the error means is that the linker can’t find the “vtable” for a class – every class with virtual functions has a “vtable” data structure associated with it. In GCC, this vtable is generated in the same .cpp file as the first listed non-inline member of the class; if there’s no non-inline members, it will be generated wherever you instantiate the class, I believe. So you’re probably failing to link the .cpp file with that first-listed non-inline member, or never defining that member in the first place.

Leave a Comment

tech