Не мог бы кто-нибудь рассказать мне, почему это не работает? У меня создалось впечатление, что C++ автоматически передает ссылку на результат функции return-by-value на конструктор, но он жалуется, что никакой соответствующий оператор не может быть найден.C++ оператор не найден
class bucket_string {
public:
bucket_string();
bucket_string(bucket_string & rhs);
bucket_string & operator=(bucket_string & rhs);
virtual ~bucket_string();
bucket_string substr(iterator start, iterator end){
bucket_string b(str);
return b;
}
};
bucket_string bs("the quick brown fox jumps over the lazy dog");
bucket_string bs1 = bs.substr(bs.begin(), bs.end());
возвращает следующее сообщение об ошибке:
error: no matching function for call to ‘bucket_string::bucket_string(bucket_string)’
note: candidates are: bucket_string::bucket_string(bucket_string&)
bucket_string::bucket_string()
Я удивлен, что вы не получите сообщение об ошибке для 'bucket_string :: bucket_string (const char *)'. Это ваш полный код? Также, где объявлен 'iterator'? –
Нет, это не так - я удалил большинство из них, чтобы было легче читать и отвечать на мой вопрос :-) – Supremacy
Ваш примерный код должен быть полным, а также минимальным, а ошибки, которые вы показываете, должны исходить из кода, который вы на самом деле имеете в вашем вопросе не какой-то другой код, который вы не показывали. Выполнение этого дает ответ на вопрос о бою, который поможет вам справиться с реальной проблемой, с которой вы сталкиваетесь. –