![]() |
Why does the compiler cannot pass?
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? Thanks a lot. ....... #include <iostream> struct A { void foo(); }; void A::foo() { ; } struct B { A* operator->(); }; struct C { B operator->(); }; struct D { C operator->(); }; int main() { D d; d->foo(); } |
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 |
| All times are GMT. The time now is 12:46 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.