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

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

Войти
Регистрация
Восстановить пароль
 
Agrik
5 / 5 / 0
Регистрация: 31.03.2013
Сообщений: 120
#1

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

25.02.2014, 23:36. Просмотров 270. Ответов 6
Метки нет (Все метки)

Есть задача, которую решил, там надо было поработать в пространстве имён. В следующей необходимо было это всё переделать под класс, находящийся в пространстве имён. 2 файла сделал, а с пользовательским у меня косяк.
cnsp.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef CNSP_H_
#define CNSP_H_
namespace SALES
{
class Sales
{
private:
    const int QUARTERS=4;
    double sales[QUARTERS];
    double average;
    double max;
    double min;
public:
    Sales(const double ar[], int n);
    ~Sales();
    void setSales();
    void showSales() const;
};
}
#endif
cnsp.cpp
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<iostream>
#include<cstring>
#include<string>
#include"cnsp.h"
using namespace std;
namespace SALES
{
    Sales::Sales(const double ar[],int n)
    {
        double summ = 0;
        max = ar[0];
        min = ar[0];
        for(int i = 0;i<n;i++)
        {
            if(n<QUARTERS)
                for(int j=n; j<QUARTERS; j++)
                    sales[j]=0;
            sales[i] = ar[i];
            if(max<ar[i])
                max = ar[i];
            if(min>ar[i])
                min = ar[i];
            summ+=ar[i];
            average = summ / QUARTERS;
        }
    }
    void Sales::setSales()
    {
        double summ = 0;
        
        cout<<"Vvelbne 4 znacheniya double:"<<endl;
        for(int i = 0;i<4;i++)
        {
            cin>>sales[i];
            max = sales[0];
            min = sales[0];
            if(max<sales[i])
                max = sales[i];
            if(min>sales[i])
                min = sales[i];
            summ+=sales[i];
            average = summ / 4;
        }
    }
    void Sales::showSales() const
    {
        for(int i = 0;i<4;i++)
            cout<<sales[i]<<endl;
        cout<<"averege = "<<average<<endl;
        cout<<"max = "<<max<<endl;
        cout<<"min = "<<min<<endl;
    }
}
cusensp.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
#include"cnsp.h"
using namespace std;
 
int main()
{double massiv1[4]={54.4, 45.8, 89.4, 34.6};
    using SALES::Sales(massiv1[],4);
    Sales 
    
    
    
    system("PAUSE");
    return 0;
}
massiv1 хочу сделать как элемент массива объектов. По идеи, если бы не пространство имён то всё решалось так:
C++
1
2
3
       Sales massiv1[2];
    massiv1[0].setgolf(massiv1[0]);
        massiv1[1].setgolf(massiv1[1])
но VS начинает ругается и добавление впереди
C++
1
using SALES Sales
тоже не помогает. Что делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2014, 23:36     Как внести класс в пространство имён
Посмотрите здесь:

Как включить класс из внешнего файла в пространство имён? - C++
У меня есть несколько .hpp файлов с объявлениями классов, типа этого: #ifndef EXPRESSION_HPP_INCLUDED #define EXPRESSION_HPP_INCLUDED ...

Пространство имён! - C++
Как лучше указывать пространство имён? using namespace std вначале? или std::? вроде бы проще первый вариант, но почему используют...

пространство имён - C++
Здравствуйте. Из C# я примерно представляю что такое пространство имён. Но возникает вопрос. Допустим в программе я использую...

Пространство имён - C++
Добрый вечер, 1) как правильно называется часть &quot;Foo::&quot; в этой записи void Foo::hello(){} 2) и почему не сделают using namespace...

Пространство имён - C++
Допустим я пишу свою программу, для которой пишу свои классы. Стоит ли создавать для них пространство имён? И вообще, в каких ситуациях...

Зачем создавать безымянное пространство имён, если я могу просто написать static? - C++
Народ, прочитал что в С++ для объявления статической глобальной переменной используют вот такую штуку: namespace { int x; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2014, 23:44     Как внести класс в пространство имён #2
using SALES::Sales;
Agrik
5 / 5 / 0
Регистрация: 31.03.2013
Сообщений: 120
26.02.2014, 10:36  [ТС]     Как внести класс в пространство имён #3
DU, сделал так
C++
1
2
3
4
5
6
7
double massiv1[4]={54.4, 45.8, 89.4, 34.6};
    double massiv2[2]={39.8, 84.6};
    using SALES::Sales;
    Sales [I]massiv[/I][2]; 
 
    massiv[0]=massiv1[4];
    massiv[1]=massiv2[2];
и всё равно VS ругается (подчёркивает красным) выделенную курсивым переменную в коде.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.02.2014, 10:58     Как внести класс в пространство имён #4
Цитата Сообщение от Agrik Посмотреть сообщение
и всё равно VS ругается
Потому что нет конструктора по умолчанию, нужного для создания массива элементов.
На будущее: указывайте сообщение об ошибке, которое пишет среда, а не просто фразу "подчёркивает красным".
Также у Вас не реализован деструктор, который, тем не менее, объявлен в классе.
Agrik
5 / 5 / 0
Регистрация: 31.03.2013
Сообщений: 120
26.02.2014, 11:35  [ТС]     Как внести класс в пространство имён #5
Tulosba, для создания массива объектов вроде ж не надо в классе конструктор, а в cusensp.cpp его не удаётся объявить. В предыдущей задаче, которую я делал тоже не было конструктора, но массив объектов создался без проблем, правда там класс не был вставлен в пространство имён. А деструктор, я думаю не особо влияет)) Правда реализовать всё же надо)
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.02.2014, 11:46     Как внести класс в пространство имён #6
Цитата Сообщение от Agrik Посмотреть сообщение
для создания массива объектов вроде ж не надо в классе конструктор
Если конструкторов вручную не создано, это еще не значит, что их нет.
Для создания массива объектов нужен конструктор по умолчанию, явный или неявный.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 19:29     Как внести класс в пространство имён
Еще ссылки по теме:

Класс и пространство имен - C++
Есть стэк, а он использует структуру как базовую единицу. Куда определить описание этой структуры - в пространство имен, а его включить в...

Как определить переменную вне пространстве имён? - C++
Нужно объявить переменную входящую в пространство имён p3, при этом вне функции. namespace p3 { int b;//Пахает } int p3::a;...

Как внести данные матрицы? - C++
Кто-нибудь может подскажит как внести данные матрицы, знаю как составить программу в буквенном выражении, но внести данные (т.е. числа) для...

Как внести изменения в строку заголовка окна? - C++
Как в строке заголовке окна заменить иконку, предлагаемую AppWizard'ом по умолчанию, на свою и как изменить текст в этой строке? ...


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

Или воспользуйтесь поиском по форуму:
Agrik
5 / 5 / 0
Регистрация: 31.03.2013
Сообщений: 120
26.02.2014, 19:29  [ТС]     Как внести класс в пространство имён #7
что-то всё равно не догоняю как его сделать
Yandex
Объявления
26.02.2014, 19:29     Как внести класс в пространство имён
Ответ Создать тему
Опции темы

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