Обычно я вижу <near match>
, когда возможный метод соответствует, кроме const
. Может быть, строки являются необязательными аргументами в этом случае? В этом случае проблема в том, что у вас есть const-объект, и вы пытаетесь вызвать неконстантный метод.
Примечание: я никогда не смотрел на код компилятора, просто смотрел на сообщения об ошибках, сгенерированные gcc.
EDIT:
Из вашего комментария строки в конце являются необязательными, поэтому проблема не в этом. Предполагая, что это метод, который вы хотите вызвать, проблема в том, что у вас есть константный указатель / ссылка на объект, и вы пытаетесь вызвать неконстантный метод. Чтобы это исправить, либо:
- Сделать метод
const
, если он не изменяет видимое состояние объекта
- Или передать неконстантную ссылку / указатель
Если ни один из этих вариантов вообще невозможен, и в качестве крайней меры, и вы не можете изменить ни одну из этих вещей, вы можете const_cast
указатель / ссылку, но тогда вы оставите в коде очень неприятный запах .
У нас есть несколько мест, которые делают const_cast
в нашем коде, но только при вызове старых функций C, которые принимают неконстантный указатель, но не изменяют его. В прямом коде C ++, которым вы управляете, вы можете избежать const_cast
.