2013-12-03 4 views
0

я получил это:прохождение карты с функцией КСС функционировать в качестве параметра

struct cmp_a_func { 
    public: 
    bool operator()(const char* a, const char* b) const { 
     return std::strcmp(a, b) < 0; 
    } 
}; 

void func(std::map<const char *, const char *, struct cmp_a_func>& a) { 
} 

int main() { 
    std::map<const char *, const char *, cmp_a_func> a; 

    func(a); 
} 

Итак, я пытаюсь передать мое отображение а на FUNC, но получаю эту ошибку:

error: no matching function for call to func(std::map<const char*, const char*, cmp_a_func>&)

EDIT: исправлено: - я, глупый блондин, не обновлял функцию прототипа в заголовке: void func (std :: map & клиентов);

Спасибо, ребята!

+0

В ** func (a) **. Это ** ** карта? – David

+0

@ DucPhan да, отредактировано. –

+0

@ Amanda Helgström: У меня нет ошибок компиляции вашего кода с помощью gcc 4.7 – David

ответ

0

Попытка удалить struct слово из последнего аргумента в func

void func(std::map<const char *, const char *, cmp_a_func>& a) 
+0

Хотя эта 'struct' не нужна, удаление ее кажется маловероятным для улучшения (или изменения) ситуации (например, VC++ 18 и g ++ 4.8.1 оба принимают код с или без присутствующего там ключевого слова struct. –

0

успешно компилируется код с GCC (GCC) 4.7.3, с или без struct от последнего аргумента в func.

Смежные вопросы