Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > proper declaration for template link problem

Reply
Thread Tools

proper declaration for template link problem

 
 
Jeff Kish
Guest
Posts: n/a
 
      10-03-2006
Hi.

I'm stuck using a very old c++ compiler, and I'm trying to figure out how to
add a declaration so that an algorithm can be used. This is really a compiler
specific problem, however I was hoping someone could suggest the proper
declaration to put in place to solve it.

If someone can suggest a solution I'd really appreciate it.

Here is the scenario:

I have an object, and I use a vector and vector Iterator with it.

the old build system I'm using (borland 5.02) is set up
with the projects I'm stuck with to generate external references to all
template instances.

This requires that I put all template instances into a standalone cpp file
that is built differently so that they are all resolved to that cpp.

this works fine except when I add a call to:
sort(myvector.begin(),myvector.end()) or
find(myvector.begin(),myvector.end(),anObject)

I get unresolved linker errors.

Now I figure I need to add the sort and find functions to the .cpp file
that resolves all the other template components like vector.size() etc.

I can't figure out what to add though, to the file.

I tried adding things like:
std::find(MAnnotation*,MAnnotation*, const MAnnotation&);

because of the error description which said:
Error: Error: Unresolved external 'std::sort(MAnnotation*,MAnnotation*)'
referenced from module STLSortVectortester.cpp

but it did not resolve the link problem.

I appreciate any assistance.

Thanks
Jeff Kish
 
Reply With Quote
 
 
 
 
Jeff Kish
Guest
Posts: n/a
 
      10-03-2006
On Tue, 03 Oct 2006 13:39:41 -0400, Jeff Kish <(E-Mail Removed)> wrote:

>Hi.
>
>I'm stuck using a very old c++ compiler, and I'm trying to figure out how to
>add a declaration so that an algorithm can be used. This is really a compiler
>specific problem, however I was hoping someone could suggest the proper
>declaration to put in place to solve it.
>
>If someone can suggest a solution I'd really appreciate it.
>
>Here is the scenario:
>
>I have an object, and I use a vector and vector Iterator with it.
>
>the old build system I'm using (borland 5.02) is set up
>with the projects I'm stuck with to generate external references to all
>template instances.
>
>This requires that I put all template instances into a standalone cpp file
>that is built differently so that they are all resolved to that cpp.
>
>this works fine except when I add a call to:
>sort(myvector.begin(),myvector.end()) or
>find(myvector.begin(),myvector.end(),anObject)
>
>I get unresolved linker errors.
>
>Now I figure I need to add the sort and find functions to the .cpp file
>that resolves all the other template components like vector.size() etc.
>
>I can't figure out what to add though, to the file.
>
>I tried adding things like:
>std::find(MAnnotation*,MAnnotation*, const MAnnotation&);
>
>because of the error description which said:
>Error: Error: Unresolved external 'std::sort(MAnnotation*,MAnnotation*)'
>referenced from module STLSortVectortester.cpp
>
>but it did not resolve the link problem.
>
>I appreciate any assistance.
>
>Thanks
>Jeff Kish

I guess I'm tired.. this worked.
MAnnotation* std::find(MAnnotation*,MAnnotation*, const MAnnotation&);
I forgot that the return types are implictly int if I don't specify them which
was wrong.
Jeff Kish
 
Reply With Quote
 
 
 
 
Marcus Kwok
Guest
Posts: n/a
 
      10-03-2006
Jeff Kish <(E-Mail Removed)> wrote:
> On Tue, 03 Oct 2006 13:39:41 -0400, Jeff Kish <(E-Mail Removed)> wrote:
>>I'm stuck using a very old c++ compiler, and I'm trying to figure out how to
>>add a declaration so that an algorithm can be used. This is really a compiler
>>specific problem, however I was hoping someone could suggest the proper
>>declaration to put in place to solve it.
>>
>>I tried adding things like:
>>std::find(MAnnotation*,MAnnotation*, const MAnnotation&);
>>
>>because of the error description which said:
>>Error: Error: Unresolved external 'std::sort(MAnnotation*,MAnnotation*)'
>>referenced from module STLSortVectortester.cpp
>>
>>but it did not resolve the link problem.

>
> I guess I'm tired.. this worked.
> MAnnotation* std::find(MAnnotation*,MAnnotation*, const MAnnotation&);
> I forgot that the return types are implictly int if I don't specify them which
> was wrong.


Maybe this is true since you must use an old compiler, but IIRC in
current C++ implicit return type is no longer supported... unfortunately
VS .NET 2003 SP1 has no qualms about compiling this code with all
warnings enabled; in fact, I couldn't even get it to warn me about
implicit int (if it did, it was buried underneath a bunch of warnings
for standard headers); of course, Comeau online gives the error:
explicit type is missing ("int" assumed).


#include <iostream>

f()
{
return 42;
}

int main()
{
f();
}

--
Marcus Kwok
Replace 'invalid' with 'net' to reply
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Using declaration inside first template parameter as default valuefor second template parameter. Stuart Redmann C++ 5 12-14-2007 08:42 AM
Extracting template types from a typedef'd template declaration Adam Nielsen C++ 3 10-19-2007 09:54 AM
error: template-id does not match any template declaration Joseph Turian C++ 2 03-22-2007 07:11 PM
template id does not match any template declaration? Alex Buell C++ 2 02-21-2006 06:33 PM
template-id does not match any template declaration blueblueblue2005 C++ 6 07-19-2005 02:59 PM



Advertisments