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

Объясните по теме "Пространства имён" - C++

Восстановить пароль Регистрация
 
fjay69
 Аватар для fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
18.09.2013, 15:25     Объясните по теме "Пространства имён" #1
Разбираю пример из Страуструпа (спец.изд.,2011), стр. 70-71.
Есть заголовочный файл stack.h, где в пространстве имён Stack объявлены
C++
1
2
3
4
5
6
7
struct Rep;
typedef Rep& stack;
 
stack create();
void destroy(stack s);
void push(stack s, char c);
char pop(stack s);
В файле с реализацией стека stack.cpp
C++
1
2
3
4
5
6
#include "stack.h"
 
Stack::stack Stack::create() { }//почему здесь для stack требуется указывать пространство имён
void Stack::destroy (stack s) { }//а здесь не требуется?
void Stack::push (stack s, char c) { }
char Stack::pop (stack s) { }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
18.09.2013, 15:28     Объясните по теме "Пространства имён" #2
Ну судя по именам это имя класса
fjay69
 Аватар для fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
18.09.2013, 15:42  [ТС]     Объясните по теме "Пространства имён" #3
В этом примере используются не классы, а пространства имён.
Ох, что-то мне подсказывает, что если функция взята из пространства имён Stack, то и её аргументы берутся из Stack, правильно?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
18.09.2013, 15:49     Объясните по теме "Пространства имён" #4
Цитата Сообщение от fjay69 Посмотреть сообщение
В этом примере используются не классы, а пространства имён.
тогда объясните почему Вы думаете что не нужно указывать пространство имен?
fjay69
 Аватар для fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
18.09.2013, 15:50  [ТС]     Объясните по теме "Пространства имён" #5
Так думаю не я, а компилятор.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
18.09.2013, 16:31     Объясните по теме "Пространства имён" #6
Все честно и по Стандарту (3.4.3/3): типы до имени функции (Stack::create например) разрешаются в текущем пространстве имен, типы после - в пространстве имен функции.
Yandex
Объявления
18.09.2013, 16:31     Объясните по теме "Пространства имён"
Ответ Создать тему
Опции темы

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