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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
SIvan
2 / 2 / 1
Регистрация: 10.05.2011
Сообщений: 19
#1

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

25.02.2012, 13:13. Просмотров 1055. Ответов 4
Метки нет (Все метки)

У меня есть несколько .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 предупреждений ===|
Как корректно объединить классы из файлов в единое пространство имён?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2012, 13:13     Как включить класс из внешнего файла в пространство имён?
Посмотрите здесь:

C++ Запуск внешнего файла
Пространство имён C++
Пространство имён! C++
Считать из внешнего файла C++
Класс и пространство имен C++
C++ Почему в списке инициализации конструктора дочернего класса нельзя вызывать конструктор родительского через его пространство имён?
C++ Как внести класс в пространство имён
C++ Как создать калькулятор, и взять из внешнего файла значения
C++ Пространство имён
Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и п C++
Пространство имён C++
Зачем создавать безымянное пространство имён, если я могу просто написать static? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5819 / 1217 / 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
1479 / 1055 / 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     Как включить класс из внешнего файла в пространство имён?
Ответ Создать тему
Опции темы

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