Форум программистов, компьютерный форум CyberForum.ru

Как включить класс из внешнего файла в пространство имён? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
SIvan
2 / 2 / 1
Регистрация: 10.05.2011
Сообщений: 19
25.02.2012, 13:13     Как включить класс из внешнего файла в пространство имён? #1
У меня есть несколько .hpp файлов с объявлениями классов, типа этого:
C++
1
2
3
4
5
6
7
8
#ifndef EXPRESSION_HPP_INCLUDED
#define EXPRESSION_HPP_INCLUDED
template <class T>
class expression
{
//Объявление класса
}
#endif // EXPRESSION_HPP_INCLUDED
Я хочу их включить в одно пространство имен:
C++
1
2
3
4
5
6
7
8
9
10
#ifndef FCNAMESPACE_HPP_INCLUDED
#define FCNAMESPACE_HPP_INCLUDED
 
namespace fractionCalc
{
    #include <fraction.hpp>
    #include <expression.hpp>
}
 
#endif // FCNAMESPACE_HPP_INCLUDED
Файл main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <FCNamespace.hpp>
 
using namespace std;
 
int main()
{
    string expression;
    cin >>expression;
    fractionCalc::expression <fractionCalc::fraction> result(expression);
    cout <<result.value();
}
Выдаёт ошибку (компилятор GNU GCC):
Код
/home/students/s0835/Documents/fractionCalc/main.cpp||In function ‘int main()’:|
/home/students/s0835/Documents/fractionCalc/main.cpp|13|error: ‘expression’ is not a member of ‘fractionCalc’|
/home/students/s0835/Documents/fractionCalc/main.cpp|13|error: missing template arguments before ‘>’ token|
/home/students/s0835/Documents/fractionCalc/main.cpp|13|error: ‘result’ was not declared in this scope|
||=== Сборка закончена: 12 ошибок, 0 предупреждений ===|
Как корректно объединить классы из файлов в единое пространство имён?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
25.02.2012, 13:17     Как включить класс из внешнего файла в пространство имён? #2
Цитата Сообщение от SIvan Посмотреть сообщение
string expression;
Вот зачем создавать строку с именем названия класса?
SIvan
2 / 2 / 1
Регистрация: 10.05.2011
Сообщений: 19
26.02.2012, 21:28  [ТС]     Как включить класс из внешнего файла в пространство имён? #3
Цитата Сообщение от Dekio Посмотреть сообщение
Вот зачем создавать строку с именем названия класса?
Допустим, что надо. Я хочу понять, как работать с нэймспейсами. Это самое естественное название)
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
26.02.2012, 22:13     Как включить класс из внешнего файла в пространство имён? #4
имена в скоупы вносятся с помощью using объявления.

в вашем случае это вроде так должно быть:

C++
1
2
3
4
namespace fractionCalc
{
  using ::expression;
}
SIvan
2 / 2 / 1
Регистрация: 10.05.2011
Сообщений: 19
27.02.2012, 09:58  [ТС]     Как включить класс из внешнего файла в пространство имён? #5
Спасибо DU, Я Понял, получается так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef FCNAMESPACE_HPP_INCLUDED
#define FCNAMESPACE_HPP_INCLUDED
#include <fraction.hpp>
#include <expression.hpp>
 
namespace fractionCalc
{
    using ::expression;
    using ::fraction;
}
 
#endif // FCNAMESPACE_HPP_INCLUDED
Yandex
Объявления
27.02.2012, 09:58     Как включить класс из внешнего файла в пространство имён?
Ответ Создать тему
Опции темы

Текущее время: 02:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru