Why does the compiler cannot pass?

F

fl

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::eek:perator->(void)" (??CB@@QAEPAUA@@XZ) referenced in function _main
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct B __thiscall C::eek:perator->(void)" (??CC@@QAE?AUB@@XZ) referenced in function _main
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct C __thiscall D::eek:perator->(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();
}
 
V

Victor Bazarov

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::eek:perator->(void)" (??CB@@QAEPAUA@@XZ) referenced in function _main
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct B __thiscall C::eek:perator->(void)" (??CC@@QAE?AUB@@XZ) referenced in function _main
1>overload_Arrow0.obj : error LNK2019: unresolved external symbol "public: struct C __thiscall D::eek:perator->(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::eek:perator->, 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top