#c #overloading
Вопрос:
во file.hpp
мне есть
void func(std::vector<double>amp; vec, const std::pair<const A, const B>amp; map,
const Camp; swap, const V* v, const Damp; date1, const Damp; date2, const int dim);
в file2.cpp
void func2(std::vector<double>amp; vec, const Aamp; p1, const Bamp; p2,
const Camp; swap, const V* v, const Damp; date1, const Damp; date2, const int dim) {
func(vec, make_pair(p1, p2), swap, v , date1, date2, dim);
}
Ошибка кроется в строке func(vec, std::make_pair<p1, p2>, swap, v, date1, date2, dim)
в нем говорится: ни одна из двух перегрузок не смогла преобразовать все типы аргументов (я перегрузил func
функцию).
Комментарии:
1. Похоже , ты зарабатываешь
std::pair<const Aamp;, const Bamp;>
, нет?2. Ваш блок кода и следующая строка несовместимы: у вас было
std::make_pair<p1,p2>
илиmake_pair(p1, p2)
? Оба варианта неверны, но первый дает сообщение об ошибке. Должно быть гибридом двух:std::make_pair(p1, p2)
.3. в моем коде это
std::make_pair(p1, p2)
извините4. Тогда… не воспроизводимо. Я дал несколько фиктивных определений для ваших
A, B, C, D, V
типов, и код компилируется.5. Но, как говорит @AlexeyLarionov, возможно
A
, проблема в ссылках наB
и в этом — трудно сказать, не зная, как определяются эти типы.