Sign in to follow this  
Followers 0
FGFS

list of vectors

6 posts in this topic

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

 

 

 

0

Share this post


Link to post
Share on other sites

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.

Edited by Washu
2

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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. 

1

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites
When you say [tt]a = function_call()[/tt] 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?
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0