2013-03-18 2 views
2

Я недавно посещал пространства имен, так как у меня есть группа функций/методов, но нет данных, поэтому логичным путем было бы придерживаться их внутри пространства имен. (Извините, если в этом вопросе ничего нет).namespace error 'Не имя пространства имен'

У меня есть следующие:

math.h

namespace Math { 

    double Euclidean(); 

} 

Math.cpp

#include "Math.h" 
double Math::Euclidean() { 
    // Implementation 
} 

И в другом пространстве имен, что мне нужно получить доступ к "Математика" пространство имен:

namespace foo { 

    foo(); 
} 

Foo .cpp

#include "Math.h" 
#include "foo.h" 

using namespace Math; 

foo::foo() { 
    // use the math function 
    Math::Euclidean(); 

}

Я получаю ошибку:

Math’ is not a namespace-name

Я, вероятно, отсутствует что-то очень простое, но я не могу понять это.

Я попытался прочитать следующее: Here, но кажется, что это использует класс, и я хотел сделать это, не используя классы.

+2

В какую строку вы принимаете ошибку? 'Double Math :: Euclidiean()', 'using namespace Math; 'или где-то еще? – Rup

+8

'' math.h "' также является стандартным заголовком C. Возможно, это то, что включает компилятор. –

+0

Вы забыли вставить некоторые из них из заголовков? –

ответ

4

Этот вопрос устарел в течение часа, поэтому я продвигаю интуитивный комментарий @Bo Persson.

"math.h" is also a C standard header. Perhaps that's what the compiler is including.

Вы, вероятно, с помощью Windows, где Math.h и math.h описывают один и тот же файл.

Переименуйте свой файл, чтобы он не имел то же имя, что и стандартный заголовок библиотеки, и его увидит компилятор.

+0

Я не пользуюсь окнами, нет. Но, я только что вернулся домой, поэтому я сделаю то, что вы предложили, спасибо. – Phorce

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