2015-05-23 77 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文件之間統一命名空間名稱。

相關問題