list of vectors

Started by
5 comments, last by FGFS 10 years, 8 months ago

Hi

I try to get the second parameter to:

(*it4).second = SDatabase::getIls(&name, m_ils_map);

but with the above error:

Multiple markers at this line
- Invalid arguments ' Candidates are: void getIls(const
std::basic_string<char,std::char_traits<char>,std::allocator<char>> &,
std::vector<Waypoint *,std::allocator<Waypoint *>> *) '
- candidate is:
- no matching function for call to ‘SDatabase::getIls(const string*,
IlsMap&)’

declared as:

virtual void getIls(const std::string &id, StdWaypointList *list);

typedef vector<Waypoint*> StdWaypointList;

my problem is that I cannot find any list of waypoints. I only see alike:

m_wpt.setFlag(flag);
m_wpt.setId(m_wpt.id().append(" (HOLD)"));
return m_wpt;

declared as:

Waypoint m_wpt(name.c_str(), "", atof(lat.c_str()), atof(lon.c_str()));

Many thanks

Michael

Advertisement

Several things wrong:

1. You're passing in a pointer to a string and a list to a function that expects references.

2. Your function doesn't RETURN anything, and you're attempting to assign that non-existant return value to an object.

3. Use code brackets and post some source, and the actual error directly from the error window. Please only include RELEVANT code.

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

Below the function that I try to call. It seems that it creates *list itself? How to call it?

void SDatabase::getIls(const std::string &id, StdWaypointList *list)
{
int cnt = m_ils_map.count(id);
if (cnt != 0) {
IlsMapIterator it = m_ils_map.find(id);
int i;
for (i = 0; i < cnt; i++) {
list->push_back((*it).second->asWaypoint());
it++;
}
}
};

If I try:

StdWaypointList list;
for (std::multimap<string, Ils*>::iterator it4=m_ils_map.begin(); it4!=m_ils_map.end(); ++it4)
{
(*it4).second = SDatabase::getIls(&name, list);

...

I get:

error: no matching function for call to ‘SDatabase::getIls(const string*, StdWaypointList&)’

Many thanks

SDatabase::getIls() expects a pointer to a StdWaypointList and you're passing a StdWaypointList by value. Bizarrely, that what the error message tells you. Good things, error messages.

You'll also need to fix your return value -- you don't have one, but you use it.

Stephen M. Webb
Professional Free Software Developer

Thanks and yes how to convert the value to pointer?

Why is a return value needed? The function pushes back list...well I don't know how long list lives. Probably visible in and living with the class?

Thanks

When you say a = function_call() you're saying that you want to assign the return value of the function call to the variable. If the function call doesn't have a return value, how can it be assigned to the variable?

deleted

This topic is closed to new replies.

Advertisement