[Bug c++/96283] New: "undefined vtable" error should indicate which members are missing
eyalroz at technion dot ac.il
gcc-bugzilla@gcc.gnu.org
Wed Jul 22 12:45:18 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96283
Bug ID: 96283
Summary: "undefined vtable" error should indicate which members
are missing
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eyalroz at technion dot ac.il
Target Milestone: ---
Consider the following code:
class Base {
public:
virtual void vmethod();
};
class foo : public Base {
int x;
void vmethod() override;
};
int main() {
foo f;
}
This will yield the errors (irrelevant paths snipped):
ld: prog.o: in function `Base::Base()':
<source>:1: undefined reference to `vtable for Base'
ld: prog.o: in function `foo::foo()':
<source>:6: undefined reference to `vtable for foo'
While this is true, it is a bit confusing. But even supposing I looked up what
this error means and realized what was going on, I would still need to go over
all the methods of one or two of the classes to find the one that's missing its
implementation. In this simple example that's not so difficult, but sometimes
it's quite the nuisance.
I'm assuming the compiler provides the linker with enough information to
realize which virtual methods' implementations are missing, so that the linker
can finally print an error message which methods are still missing after it has
run.
In this specific case, the linker should complain about vmethod() missing its
definition.
GodBolt: https://godbolt.org/z/9Ejn4s
More information about the Gcc-bugs
mailing list