Это несколько теоретический вопрос ...Несколько определений ... | C++
Я читал о ссылках на объектные файлы. Теперь я получаю сообщения об ошибках о нескольких определениях некоторых функций. Я считаю, что определил проблему следующим образом:
Я два отдельных файлов заголовок A и B.
обоих заголовков доступ к тем же заголовок H.
От А и BI имеет скомпилированные объектные файлы AO и BO.
Когда я пытаюсь скомпилировать cpp-файл M, который включает A и B, связывая AO и BO с M, я получаю сообщения об ошибках в нескольких определениях.
Функция (s), что сообщение об ошибке (ы) об расположены в Н.
Я предполагаю, что проблема в том, что в обоих АО и ВО-то ссылки или скомпилированный код/из H, так что он появляется дважды, когда я связываю AO ad BO при компиляции M. Я правильно понял проблему, или мне, вероятно, не хватает чего-то элемента?
И если да, то как вам избежать или обойти такую проблему?
Редактировать: Я сказал, что скомпилировал файлы заголовков. Извините, это был неряшливый способ сказать это. Я скомпилировал файлы cpp с реализациями методов класса в заголовочных файлах A и B.
У вас есть полные функции (то есть, включая фактический код внутри '{}' в H? Если да, это не должно быть там, и это проблема. – deviantfan
Предлагаю вам прочитать о ODR http://en.wikipedia.org/wiki/One_Definition_Rule – vsoftco
Возможно, вам стоит опубликовать свой код, трудно понять, что вы сделали, что привело к ошибкам MD. С одной стороны, вы говорите, что вы скомпилировали файлы заголовков, вы не хотите делать – user657267