Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > passing argument in STL loop ?

Reply
Thread Tools

passing argument in STL loop ?

 
 
sd2004
Guest
Posts: n/a
 
      01-20-2006
I am still learning, could someone
show/explain to me how to fix the error.
I can see it is being wrong but do not know how to fix.
could you also recommend a book that I can ref. to ?
////////////////// ERROR MESSAGE /////////////////////


bash-2.05b$ g++ test5c.cpp
test5c.cpp: In function `int main()':
test5c.cpp:36: error: invalid initialization of reference of type
'astruct&'
from expression of type 'std::string'
test5c.cpp:20: error: in passing argument 1 of `void
dog_name(astruct&)'
test5c.cpp: In function `void dog_name(astruct&)':
test5c.cpp:49: error: overloaded function with no contextual type
information
test5c.cpp:49: error: base operand of `->' is not a pointer
bash-2.05b$
////////////////////// SOURCE CODE //////////////////////////////
#include<iostream>
#include <string>
#include<vector>
#include<sstream>
#include<fstream>
using namespace std;


struct astruct
{
string name;
int id;
string type;



};


#define goldenretriever 11
#define Lab 33
#define Boxer 44
#define Terrier 55

void dog_name (astruct& astructref);
int main()
{
vector<astruct> v;
astruct astr;
ifstream in ("test5c.txt");
string line;
while (getline(in,line)){
istringstream anyname(line);
anyname>>astr.name>>astr.id>>astr.type;
v.push_back(astr);
}
vector<astruct>::iterator search;
for (search=v.begin();search!=v.end();++search){
switch (search->id){
case goldenretriever:
dog_name(search->name);
break;
case Lab:
cout <<search->name <<" is Lab. "<<endl;
default:
break;
break;
}


}


return 0;


}


void dog_name (astruct& s){
cout <<search->name <<" is GoldenRetriever "<<endl;


}


////////////////////// INPUT FILE "test5c.txt" ///////////////////

cricket 11 GoldenRetriever
nitro 11 GoldenRetriever
Maxtor 33 Lab
Aaxtor 44 Boxer
Dora 55 Terrier

 
Reply With Quote
 
 
 
 
Thomas Tutone
Guest
Posts: n/a
 
      01-20-2006
sd2004 wrote:

> could you also recommend a book that I can ref. to ?


To learn: Koenig & Moo, Accelerated C++
For reference: Stroustrup, The C++ Programming Language

Best regards,

Tom

 
Reply With Quote
 
 
 
 
Marcus Kwok
Guest
Posts: n/a
 
      01-21-2006
sd2004 <(E-Mail Removed)> wrote:
> I am still learning, could someone
> show/explain to me how to fix the error.
> I can see it is being wrong but do not know how to fix.


> ////////////////// ERROR MESSAGE /////////////////////
>
> bash-2.05b$ g++ test5c.cpp
> test5c.cpp: In function `int main()':
> test5c.cpp:36: error: invalid initialization of reference of type
> 'astruct&'
> from expression of type 'std::string'
> test5c.cpp:20: error: in passing argument 1 of `void
> dog_name(astruct&)'


Here is your function prototype:
> void dog_name (astruct& astructref);


Here is your definition of astruct:
> struct astruct
> {
> string name;
> int id;
> string type;
> };


This is your iterator:
> vector<astruct>::iterator search;


Here is how you call dog_name:
> dog_name(search->name);


search->name is equivalent to (*search).name, and (*search) is of type
astruct, so you are passing the "name" member (which is of type string)
of the astruct associated with the current iterator. Therefore you are
passing a string into your dog_name() function, but dog_name() is
expecting a reference to an astruct.

> test5c.cpp: In function `void dog_name(astruct&)':
> test5c.cpp:49: error: overloaded function with no contextual type
> information
> test5c.cpp:49: error: base operand of `->' is not a pointer


> void dog_name (astruct& s){
> cout <<search->name <<" is GoldenRetriever "<<endl;
> }


You use operator-> with pointers (and pointer-like types, like
iterators) to refer to members of structs or classes. You use operator.
to refer to members of structs or classes when they are actual objects,
or references to objects. Also, you are using the wrong variable in
your function, and the parameter should be const since you are not
changing it.

> could you also recommend a book that I can ref. to ?


The C++ FAQ is a good source of information:
http://www.parashift.com/c++-faq-lite/

There is also the newsgroup:
alt.comp.lang.learn.c-c++
which is more geared towards beginners.

For book recommendations, check out:
http://www.accu.org/

--
Marcus Kwok
 
Reply With Quote
 
sd2004
Guest
Posts: n/a
 
      01-21-2006
Thanks for taking your time. I really appreciated.
After reading your thread. I did fixed the code and it worked.

 
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
Triple nested loop python (While loop insde of for loop inside ofwhile loop) Isaac Won Python 9 03-04-2013 10:08 AM
How to use a passing argument(returned argument)? ؿ Ruby 7 11-27-2008 03:53 AM
Passing a function as an argument and using the evaluated functionas an argument User1014 Javascript 1 11-30-2006 12:13 PM
loop thru a STL list causes an infinite loop Allerdyce.John@gmail.com C++ 5 01-31-2006 03:21 PM
Argument-per-argument Passing Trans Ruby 3 01-26-2005 05:58 PM



Advertisments