2015-05-23 3 views
0

У меня был отлично работающий проект в Qt, и мне пришлось добавить внешнюю библиотеку (* .h и * .cpp), чтобы продолжить работу. Однако, после добавления этих файлов в проект, я вдруг 48 ошибок, и они начинают с проблемой с именами ...Qt и ошибка пространства имен с библиотекой

Вот мой файл .pro:

QT  += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = ean 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp \ 
    IntervalArithmetic.cpp 

HEADERS += mainwindow.h \ 
    IntervalArithmetic.h 

FORMS += mainwindow.ui 

QMAKE_CXXFLAGS += -std=c++11 

LIBS += -lmpfr 
LIBS += -lgmp 

Вот начало моего * .h файл добавлен:

#ifndef INTERVALARITHMETIC_H_ 
#define INTERVALARITHMETIC_H_ 
#include <iostream> 
#include <string> 
#include <sstream> 
#include <exception> 
#include <fenv.h> 
#include <stdlib.h> 
#include <stdint.h> 
#include <mpfr.h> 


using namespace std; 

namespace intervalarth 
{ 

struct interval 
{ 
    long double a, b; 
}; 


class IntervalArithmetic 
{ 
public: 
    IntervalArithmetic(); 
... 

А вот начало соответствующего * .cpp файла:

#include "IntervalArithmetic.h" 

#include <sstream> 
#include <iomanip> 
#include <stdexcept> 
#include <cfenv> 
#include <cstdlib> 
#include <cstdint> 
#include <climits> 
#include <cmath> 

#include "mpfr.h" 

using namespace std; 
using namespace IntervalArithmetic; 
... 

ошибки можно увидеть на этой картинке:

enter image description here

Не могли бы вы мне помочь?

+3

Вы должны ** никогда не использовать 'using namespace ...' в файле заголовка. Даже в файле cpp не рекомендуется. – Erbureth

ответ

0

Ваше пространство имен называется namespace intervalarth, но вы - using namespace IntervalArithmetic;, который не является именем пространства имен, как указано в первой ошибке на скриншоте выше.

Вы должны объединить имя пространства имен между * .cpp и * .h файлами.

Смежные вопросы