crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

denis_panchenko
  опции профиля:
сообщение 28.8.2011, 18:26
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 28.8.2011
Пользователь №: 2834

Спасибо сказали: 0 раз(а)




Репутация:   0  


Объясню суть проблемы на примере.
Имеется 3 файла:
1) a.h
//----------------------
#ifndef a_h
#define a_h

namespace ns
{
    void foo(){};
}
#endif
//---------------------

2) b.h
//---------------------
#ifndef b_h
#define b_h

#include "a.h"

#endif
//---------------------

3) c.h
//---------------------
#ifndef c_h
#define c_h

#include "b.h"

#endif

При таком положении дел все компилируется и работает, но стоит добавить файл
b.cpp
//----------------------
#include "b.h"
//----------------------


как линкер выдаёт ошибку: a.h:6: multiple definition of `ns::foo()'.
Не понимаю чем вызвана эта ошибка и как в данном случае с ней справиться? Задаю вопрос в разделе про Qt, так как это упрощенная модель структуры программы, которая создаётся в Qt Creator 4.6.2

Сообщение отредактировал ViGOur - 1.11.2011, 20:03
Причина редактирования: Добавил тэги CODE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.8.2025, 21:23