Ошибка C ++ без определения оператора

В настоящее время я портирую приложение C ++ в слегка ограниченную среду. Приложение использует классы STL, String и Stream. Я переписываю их упрощенные версии, которые будут хорошо работать в моей среде.

Меня беспокоит то, что мое приложение компилируется даже без всех необходимых определений операторов. Например, для моих строковых классов я определил:

string operator+ (const string& lhs, const string& rhs);

, и этого было достаточно. Однако я заметил, что часто бывают случаи, когда mystring + «некоторая постоянная строка» нигде не определена в моем коде. Когда я явно добавил это, было использовано:

string operator+ (const string& lhs, const char* rhs);

Что происходило до этого? Он успешно скомпилировался, прежде чем я добавил вторую функцию. Конечно, компилятор не смог бы понять, как объединить строки в стиле c с моим строковым классом.

У меня сейчас странное поведение в моей программе, и мне интересно, не связано ли это с тем, что другие операторы не определены. Есть ли способ заставить компилятор требовать таких определений операторов, если это необходимо программе?

P.S. Мой строковый класс находится в уникальном пространстве имен и не связан с std ::

7
задан hayesti 20 October 2011 в 19:10
поделиться