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

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

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

Помогите устранить ошибку в коде. - C++

19.01.2013, 16:05. Просмотров 247. Ответов 6
Метки нет (Все метки)

Здравствуйте не могу понять почему в программе в строке 54 выдает ошибку. У меня в классе массив указателей объявлен как Static.

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#ifndef DATE_H
#define DATE_H
class date
{
public:
    date(int = 1, int = 1, int = 1990);
    date(int = 1, int = 1990);
    date(char *,int , int);
    void print() const;
    void print_DD_YYYY() const;
    void print_MMDDYYYY() const;
    void print_MOUNTH_DDYYYY() const;
private:
    char *cmounth;
    int mounth;
    int day;
    int year;
    int checkday(int );
};
#include <iostream>
using namespace std;
date::date(char *a, int d, int y)
{
    int i;
    static char *m[12]={"January","February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    for (i = 0; i < 12; i++)
    {
        if (!strcmp(a,m[i]))
            break;
    }
    if ( i < 12)
    {
        cmounth = m[i];
        mounth = i+1;
    }
    else
    {
        cmounth = m[0];
    }
    year = (y > 0 && y < 10000) ? y : 1990;
}
date::date(int m, int d, int y)
{
    if (m > 0 && m < 12)
        mounth = m;
    else
    {
        mounth = 1;
    }
    if (y > 0 && y < 9999)
        year = y;
    else year = 1;
    day = checkday(d);
    cmounth = m[mounth - 1];
}
date::date(int d, int yyyy)
{
    day = (d < 32 && d > 0) ? d : 1;
    year = (yyyy > 0 && yyyy < 10000) ? yyyy : 1990;
    if (!mounth)
        mounth = 1;
    cmounth = m[mounth - 1];
}
date::date(char *a, int d, int y)
{
    static char *m[12]={"January","February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    for (int i = 0; i < 12; i++)
    {
        if (!strcmp(a,m[i]))
            break;
    }
    if ( i < 12)
    {
        cmounth = m[i];
        mounth = i+1;
    }
    else
    {
        cmounth = m[0];
    }
    year = (y > 0 && y < 10000) ? y : 1990;
}
int date::checkday(int td)
{
    static int tdm[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if(mounth == 2)
    {
        if ( td == 29 && year % 4 == 0 )
        return td;
        else
            if(td == 28 && year % 4 != 0)
            {
                return td;
            }
            else
            return 1;
    }
    else
    if (td > 0 && td <= tdm[mounth])
        return td;
    return 1;
}
void date::print() const
{
    cout << mounth << "-" << day << "-" << year;
}
void date::print_DD_YYYY() const
{
    cout << (day < 10) ? '0' << day << ' ' << year;
}
void date::print_MMDDYYYY() const
{
    cout << endl << (mounth < 10) ? '0' << mounth << '/'; 
    cout << (day < 10) ? '0' << day << '/';
    cout << year;
}
void date::print_MOUNTH_DDYYYY() const
{
    cout << endl << cmounth << ' ' << (day < 10)? '0'
        day << ',' << year; 
}
#endif
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 16:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите устранить ошибку в коде. (C++):

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

Найти и устранить ошибку в коде программы, возникающую при сортировке самодельного списка - C++
Доброго времени суток! Сделал сортировку, при отладке видно, что он сортирует, но в конце выбивает ошибку, помогите, пожалуйста. ...

Помогите устранить ошибку: ссылка на неразрешенный внешний символ - C++
Здравствуйте! Помогите бьет ошибку: error LNK2019: ссылка на неразрешенный внешний символ &quot;public: __thiscall Car::Car(void)&quot;...

Помогите найти ошибку в коде - C++
// ConsoleApplication5.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include&lt;conio.h&gt; ...

Помогите найти ошибку в коде - C++
Всем привет.Пишу вот такой простенький код в Visual Studio #include &lt;iostream&gt; Int main() { ...

Помогите найти ошибку в коде - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; using namespace std; void mas(int ar, int count) { for (int i = 0;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13237 / 7509 / 847
Регистрация: 27.09.2012
Сообщений: 18,448
Записей в блоге: 3
Завершенные тесты: 1
19.01.2013, 16:17 #2
m - это переменная int, а Вы к операцию индексации применяете

Добавлено через 2 минуты
В следующем методе m вообще нет. В 72 строчке i не доступна.
119, 120 - двоеточие забыли?
1
1ые
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
19.01.2013, 16:37  [ТС] #3
Да прошу прощения, недавно в этом форуме ошибки все исправил кроме 2ух 54 и 62 строка. Разве переменные static не всему классу видны?
C++ (Qt)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef DATE_H
#define DATE_H
class date
{
public:
    date(int = 1, int = 1, int = 1990);
    date(int = 1, int = 1990);
    date(char *,int , int);
    void print() const;
    void print_DD_YYYY() const;
    void print_MMDDYYYY() const;
    void print_MOUNTH_DDYYYY() const;
private:
    char *cmounth;
    int mounth;
    int day;
    int year;
    int checkday(int );
};
#include <iostream>
using namespace std;
date::date(char *a, int d, int y)
{
    int i;
    static char *m[12]={"January","February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    for (i = 0; i < 12; i++)
    {
        if (!strcmp(a,m[i]))
            break;
    }
    if ( i < 12)
    {
        cmounth = m[i];
        mounth = i+1;
    }
    else
    {
        cmounth = m[0];
    }
    year = (y > 0 && y < 10000) ? y : 1990;
}
date::date(int mm, int d, int y)
{
    if (mm > 0 && mm < 12)
        mounth = mm;
    else
    {
        mounth = 1;
    }
    if (y > 0 && y < 9999)
        year = y;
    else year = 1;
    day = checkday(d);
    cmounth = m[mounth - 1];
}
date::date(int d, int yyyy)
{
    day = (d < 32 && d > 0) ? d : 1;
    year = (yyyy > 0 && yyyy < 10000) ? yyyy : 1990;
    if (!mounth)
        mounth = 1;
    cmounth = m[mounth - 1];
}
int date::checkday(int td)
{
    static int tdm[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if(mounth == 2)
    {
        if ( td == 29 && year % 4 == 0 )
        return td;
        else
            if(td == 28 && year % 4 != 0)
            {
                return td;
            }
            else
            return 1;
    }
    else
    if (td > 0 && td <= tdm[mounth])
        return td;
    return 1;
}
void date::print() const
{
    cout << mounth << "-" << day << "-" << year;
}
void date::print_DD_YYYY() const
{
    if(day < 10)
        cout << '0';
    cout << day << ' ' << year;
}
void date::print_MMDDYYYY() const
{
    cout << endl;
    if (mounth < 10)
        cout << '0';
    cout << mounth << '/'; 
    if(day < 10)
        cout <<'0';
    cout << '/' << year;
}
void date::print_MOUNTH_DDYYYY() const
{
    cout << endl << cmounth << ' ';
    if(day < 10)
        cout << '0';
    cout << day << ',' << year; 
}
#endif
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
19.01.2013, 17:02 #4
static char * m[12] - локальная переменная для функции, в данном случае для конструктора. Естественно, другие функции ничего о ней не знают.

Цитата Сообщение от 1ые Посмотреть сообщение
Разве переменные static не всему классу видны?
Нет, static не меняет область видимости, идентификатор переменной известен только внутри функции.
0
1ые
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
19.01.2013, 17:40  [ТС] #5
А нельзя переменную объявить так чтобы всему классу видно было?
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
19.01.2013, 17:53 #6
1ые, можно сделать ее членом класса.

C++
1
2
3
4
5
6
7
8
9
class MyClass
{
private:
    // объявление
    static const char * m[12];
};
 
// инициализация
const char * MyClass::m[12] = {"January","February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
И еще, все же это должен быть массив указателей на константные данные, нужен спецификатор const.
1
1ые
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
19.01.2013, 18:07  [ТС] #7
спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 18:07
Привет! Вот еще темы с ответами:

Помогите найти ошибку в коде - C++
Проблема вот в чём, есть программа, довольно большая по кол-ву строк и поэтому весь код показать не смогу, впринципе вопрос такой: -после...

Помогите найти ошибку в коде - C++
#include &lt;vcl.h&gt; #pragma hdrstop #include &lt;iostream.h&gt; #include &lt;conio&gt; #include &lt;math.h&gt; ...

Помогите исправить ошибку в коде - C++
7,3.cpp: In function ‘int main()’: 7,3.cpp:7:7: error: ‘int dist::feet’ is private int feet; ^ 7,3.cpp:44:15: error:...

Помогите исправить ошибку в коде с++ - C++
Решаю задачу с вот такими вычислениями. for(x=1;x &lt; r-1; x++) { while ((sqr(x) + sqr(y)) &gt; sqr(r)) { y=y-1; ...


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

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

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