6 / 6 / 2
Регистрация: 31.03.2013
Сообщений: 120
1

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

25.02.2014, 23:36. Показов 634. Ответов 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
тоже не помогает. Что делать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2014, 23:36
Ответы с готовыми решениями:

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

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

Имя за которым следует :: должно определять класс или пространство имен
В этой строке: v6 = __crt_state_management::dual_state_global&lt;void (*)(wchar_t const *,wchar_t...

Класс использует другое пространство имен
Есть два пространства имен using System.Windows; using Word = Microsoft.Office.Interop.Word; Я...

6
DU
1499 / 1145 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2014, 23:44 2
using SALES::Sales;
0
6 / 6 / 2
Регистрация: 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 ругается (подчёркивает красным) выделенную курсивым переменную в коде.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.02.2014, 10:58 4
Цитата Сообщение от Agrik Посмотреть сообщение
и всё равно VS ругается
Потому что нет конструктора по умолчанию, нужного для создания массива элементов.
На будущее: указывайте сообщение об ошибке, которое пишет среда, а не просто фразу "подчёркивает красным".
Также у Вас не реализован деструктор, который, тем не менее, объявлен в классе.
0
6 / 6 / 2
Регистрация: 31.03.2013
Сообщений: 120
26.02.2014, 11:35  [ТС] 5
Tulosba, для создания массива объектов вроде ж не надо в классе конструктор, а в cusensp.cpp его не удаётся объявить. В предыдущей задаче, которую я делал тоже не было конструктора, но массив объектов создался без проблем, правда там класс не был вставлен в пространство имён. А деструктор, я думаю не особо влияет)) Правда реализовать всё же надо)
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.02.2014, 11:46 6
Цитата Сообщение от Agrik Посмотреть сообщение
для создания массива объектов вроде ж не надо в классе конструктор
Если конструкторов вручную не создано, это еще не значит, что их нет.
Для создания массива объектов нужен конструктор по умолчанию, явный или неявный.
0
6 / 6 / 2
Регистрация: 31.03.2013
Сообщений: 120
26.02.2014, 19:29  [ТС] 7
что-то всё равно не догоняю как его сделать
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2014, 19:29
Помогаю со студенческими работами здесь

Как документировать пространство имен
namespace Person { /// &lt;summary&gt; /// Здесь создается объект Person /// &lt;/summary&gt; ...

Как узнать пространство имен?
Здравствуйте, возникла ситуация, при которой нужно явно указать, к какому пространству имен...

Как изменить пространство имен?
Накатал программку, где namespace задан по умолчанию - WindowsFormsApp1:using System; ... ...

Как работает пространство имен в Delphi ?
Уважаемые гуру, пожалуйста, объясните мне(недалекому), как работает пространство имен в Delphi ? ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru