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

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

Восстановить пароль Регистрация
 
Agrik
5 / 5 / 0
Регистрация: 31.03.2013
Сообщений: 120
25.02.2014, 23:36     Как внести класс в пространство имён #1
Есть задача, которую решил, там надо было поработать в пространстве имён. В следующей необходимо было это всё переделать под класс, находящийся в пространстве имён. 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++ Как включить класс из внешнего файла в пространство имён?
Как внести изменения в строку заголовка окна? C++
Пространство имён C++
Пространство имён! C++
C++ Как узнать пространство имен?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.02.2014, 11:46     Как внести класс в пространство имён #6
Цитата Сообщение от Agrik Посмотреть сообщение
для создания массива объектов вроде ж не надо в классе конструктор
Если конструкторов вручную не создано, это еще не значит, что их нет.
Для создания массива объектов нужен конструктор по умолчанию, явный или неявный.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 19:29     Как внести класс в пространство имён
Еще ссылки по теме:

Класс и пространство имен C++
C++ Почему в списке инициализации конструктора дочернего класса нельзя вызывать конструктор родительского через его пространство имён?
C++ Пространство имён

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

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

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