Re: Why does the compiler cannot pass?
On 1/28/2013 11:07 AM, fl wrote:
Hi,
I am compiling the following program below the dot line, which is copied from a website. There are some link errors:
1> overload_Arrow0.cpp
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct A * __thiscall B::operator->(void)" (??CB@@QAEPAUA@@XZ) referenced in function _main
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct B __thiscall C::operator->(void)" (??CC@@QAE?AUB@@XZ) referenced in function _main
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct C __thiscall D::operator->(void)" (??CD@@QAE?AUC@@XZ) referenced in function _main
I do not solve this after several trials. What is wrong with the code?
Just like your linker tells you, it cannot find those functions.
Thanks a lot.
......
#include <iostream>
struct A {
void foo();
};
void A::foo()
{
;
}
struct B { A* operator->(); };
struct C { B operator->(); };
struct D { C operator->(); };
The three lines above define classes B, C, D, respectively, and each of
those classes *declares* operator->() function, but there is no
*definition* of those functions (B::operator->, etc.) in your code. You
should consider defining them since you actually call those in your
'main' program.
int main()
{
D d;
d->foo();
}
V
--
I do not respond to top-posted replies, please don't ask