Могу ошибаться
extern
ты прав. Он дает выражению характеристику внешнего связывания, а у глобальных констант без этого спецификатора связывание внутреннее. мне не помогает, я уже во все папки скопировал и ничего все-равно ошибка
Для решения задачи у тебя есть два множества: множество "A" и множество "B". И есть интерфейс с функцией "virtual B Intf::Foo(A) = 0";
В базе кода уже присутствует полсотни имплементаций этого интерфейса и больше тысячи мест использования имплементаций по интерфейсу.
Твоя задача - создать еще одну имплементацию "Intf::Foo", для работы которой потребуется сперва как-то изменить как множество "A", так и множество "B".
Вопрос: какие ограничения уже имеющийся код накладывает на твои возможности по изменению множеств "A" и "B"?
А можно узнать почему?
1. Effective C++
2. Effective Modern C++
3. Effective STL
4. More Effective C++
5. Exceptional C++
6. More Exceptional C++
7. Exceptional C++ Style
8. C++ Coding Standards
9. Modern C++ Design
это не ответ на мою просьбу. Если упоминаете какие то референсы то и скидывайте конкретные примеры
но в этом и проблема что все книги упомянутых мною авторов датируются 2001-2004 годами
auto
только усложняет чтение кода, сбивает читателя с его мысли и заставляет задаваться совсем ненужными вопросами. Поэтому лучше указывать явные типы переменных. А обобщение использовать стоит только тогда, когда указание явного типа только затрудняет понимание кода при чтении.auto
в типе результата буквально незачем. Объявление этого шаблона должно быть таким:template <typename TResult>
TResult search (std::string str);
Дизайн твоего кода должен быть таким, чтобы учитывать все правила языка. Язык не будет подстраиваться под твой код, это твой код нужно подстроить так чтобы он ложился на язык.
Инструменты всегда нужно выбирать от задачи. Глобальные выражения - это инструмент. Сейчас ты пытаешься использовать его для решения той задачи, которую инструмент не решает.
Тебе нужно объяснить свою задачу чтобы, как минимум, я смог помочь тебе.
В любом случае. Этот твой вопрос решен, единственный ответ дает тебе решение, хоть и не объясняет почему
extern
решает проблему.Все остальное - дело уже другого вопроса.