Qt和命名空间错误与库

时间:2015-05-23 08:49:29

标签: c++ qt namespaces

我在Qt中有一个完美的工作项目,我不得不添加一个外部库(* .h和* .cpp)继续工作。但是,在将这些文件添加到项目后,我突然有48个错误,他们从命名空间的问题开始......

这是我的.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

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

您的命名空间名为namespace intervalarth,但您的using namespace IntervalArithmetic;不是命名空间名称,如上面屏幕截图中的第一个错误中所述。

您必须统一* .cpp和* .h文件之间的名称空间名称。