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

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

Войти
Регистрация
Восстановить пароль
 
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
#1

Класс и пространство имен - C++

09.08.2013, 20:55. Просмотров 555. Ответов 6
Метки нет (Все метки)

Есть стэк, а он использует структуру как базовую единицу.
Куда определить описание этой структуры - в пространство имен, а его включить в class?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct customer 
{
    enum e1{str_size = 35};
    char fullname[str_size];
    double payment;
};
 
#ifndef STACK_H_
#define STACK_H_
 
typedef customer Item;
 
class Stack
{
private:
    enum {MAX = 10}; // constant specific to class
    Item items[MAX]; // holds stack items
    int top; // index for top stack item
public:
    Stack();
    bool isempty() const;
    bool isfull() const;
    // push() returns false if stack already is full, true otherwise
    bool push(const Item & item); // add item to stack
    // pop() returns false if stack already is empty, true otherwise
    bool pop(Item & item); // pop top into item
};
#endif
ну то есть вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace n_s_customer
{
struct customer 
{
    enum e1{str_size = 35};
    char fullname[str_size];
    double payment;
};
};
 
#ifndef STACK_H_
#define STACK_H_
 
using n_s_customer::customer;
 
typedef customer Item;
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2013, 20:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс и пространство имен (C++):

Пространство имен - C++
Подскажите, пожалуйста. Если я создам своё пространство имен и в нем создам функцию, например, abc() и при использовании в main() using...

пространство имен - C++
Здравствуйте! У меня вопрос...В си есть такая функция printf, которая аналогична функции С++ cout. Почему, когда нам необходимо...

Пространство имен - C++
Как составить код, когда необходимо использовать классы и методы из разных пространств имен. К примеру используется cout из std и...

Пространство имен - C++
Зачем пространство имен в программировании я чет не понимаю? У мну в учебнике отак написано. Пространство имен, локализуя видимость...

пространство имен - C++
Один практикующий программист сказал мне, что пространство именusing namespace std; нежелательно объявлять в начале программы, а лучше...

Пространство имен - C++
Я часто встречаю в книгах, туторах, что объявлять пространство имен в больших проектах нельзя(не рекомендуемо), но нигде не сказано...

6
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
09.08.2013, 21:00 #2
Зачем такие извращения?
ЗЫ Стек так и просится быть шаблонным классом.
0
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
09.08.2013, 21:06  [ТС] #3
Ну, это вроде бы как учебный пример - о шаблонах я думаю еще почитаю у Vandervoorde
вопрос не в этом был
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
09.08.2013, 22:37 #4
Может вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
namespace nmspc{
struct customer 
{   
int payment;
customer(int pmnt_)
:payment(pmnt_)
{}
};
}
class ClassA{
public:
nmspc::customer cstmr;
 ClassA(int pmnt_)
:cstmr(pmnt_)
{}
};
 int main()
{
 ClassA a(123);
cout<<a.cstmr.payment<<endl;
cin.get();
return 0;
}
0
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
10.08.2013, 01:17  [ТС] #5
я просто не совсем понял чем Ваш пример от моего №2 отличается - ну кроме того что у меня он в разных файлах?
Это у меня типа *.h
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
10.08.2013, 01:30 #6
Цитата Сообщение от Aliru Посмотреть сообщение
я просто не совсем понял чем Ваш пример от моего №2 отличается - ну кроме того что у меня он в разных файлах?
Это у меня типа *.h
Я не посмотрел в концовку Вашего вопроса. Полагал, что это вопрос, а не выступление. Но дело то и не в этом. Вы же спросили как в классе объявить? А то, что я вижу это как в файле (или части файла, т.е. локальной области видимости) объявить. Класс сам по себе пространство имён и довольно специфическое. Внутри класса использовать using не получается, а через прямое разрешение доступа, - получается. Хотя конечно, если объявление using в охватывающей области по отношению к определению класса, то и так можно.
1
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
11.08.2013, 20:24  [ТС] #7
То есть Безопасней использовать пр-во имен - правда с поправкой на поиск Кенига, правильно?
А кстати неименованое пр-во имен для этого файла вместо глобального объявления - это бы здесь нормально было-бы?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2013, 20:24
Привет! Вот еще темы с ответами:

Пространство имен - C++
Здравствуйте, имеется код : triangle.h #ifndef TRIANGLE_H_INCLUDED #define TRIANGLE_H_INCLUDED namespace TRG { struct...

Пространство имен std - C++
Какой стиль лучше ? using std::cout; using std::endl; or using namespace std;

Пространство имен std - C++
В книге Дейтела (как, и в других источниках) написано, что можно написать using namespace std, а можно указывать std:: перед функциями. Но...

Пространство имен в многофайловной программе - C++
Всем привет! Yashman, у которого часто что-то не получается снова в сети с новой проблеммой! :) Вот написал программу, а она не...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
11.08.2013, 20:24
Ответ Создать тему
Опции темы

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