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

Устраните деприкацию - C++

Восстановить пароль Регистрация
 
takeneo
3 / 3 / 3
Регистрация: 16.08.2013
Сообщений: 22
20.11.2013, 04:48     Устраните деприкацию #1
Нашёл в учебнике С.Девиса функцию char* int2month(int nMonth) сам дописал к ней функцию main.
Программа выводит имя месяца в ответ на номер.
Как устранить предупреждения компилятора g++ ? Или забить на них?
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
#include <iostream>
char* int2month(int nMonth)
{
    if (nMonth<1 || nMonth > 12)
    {
        return "invalid";
    }
    char* pszMonths[] = {"Ошибка",
                          "Январь",
                          "Февраль",
                          "Март",
                          "Апрель",
                          "Май",
                          "Июнь",
                          "Июль",
                          "Август",
                          "Сентябрь",
                          "Ноябрь",
                          "Декабрь"};
    return pszMonths[nMonth];
}
int main()
{
    int m;
    std::cout<<"введите номер месяца\n";
    std::cin>>m;
    std::cout<<int2month(m);
    return 0;
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
g++ -Wall -o "arraymonth" "arraymonth.cxx" (в каталоге: /home/username/cxx)
arraymonth.cxx: В функции «char* int2month(int)»:
arraymonth.cxx:6:10: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
arraymonth.cxx:19:25: предупреждение: deprecated conversion from string constant to «char*» [-Wwrite-strings]
Сборка прошла успешно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 04:48     Устраните деприкацию
Посмотрите здесь:

устраните ошибку Turbo Pascal
C++ устраните неполадки Microsoft Visual c++ runtime library
Устраните ошибку в коде, который перемещает диаграмму из Excel в Power Point VBA
Pascal Устраните критические моменты в программе
Pascal ABC выявите и устраните ошибку
Устраните пожалуста кто может ощьбки из DSDT.aml фаила

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
katsidelin
 Аватар для katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
20.11.2013, 05:55     Устраните деприкацию #2
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
#include <string>
#include <iostream>
std::string int2month(int nMonth)
{
    if (nMonth<1 || nMonth > 12)
    {
        return "invalid";
    }
    std::string pszMonths[] = {"Ошибка",
                          "Январь",
                          "Февраль",
                          "Март",
                          "Апрель",
                          "Май",
                          "Июнь",
                          "Июль",
                          "Август",
                          "Сентябрь",
                          "Ноябрь",
                          "Декабрь"};
    return pszMonths[nMonth];
}
int main()
{
    int m;
    std::cout<<"введите номер месяца\n";
    std::cin>>m;
    std::cout<<int2month(m);
    return 0;
}
Класс string - строковый класс. Его можно преобразовать в массив символов с помощью функции c_str() ( pszMonths.c_str() ), как массив символов преобразовать обратно, я пока не знаю.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
20.11.2013, 06:17     Устраните деприкацию #3
Цитата Сообщение от takeneo Посмотреть сообщение
C++
1
char* pszMonths[] = { /* ... */ };
Строковые литералы неизменяемы:
C++
1
char const* pszMonths[] = { /* ... */ };
Yandex
Объявления
20.11.2013, 06:17     Устраните деприкацию
Ответ Создать тему
Опции темы

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