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

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

Войти
Регистрация
Восстановить пароль
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
#1

Как инициализировать массив строк в конструкторе - C++

01.06.2014, 08:23. Просмотров 321. Ответов 9
Метки нет (Все метки)

File.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class CTest
{
    public:
 
        char* m_pszText[ 3 ];
 
        CTest(  )
        {
            char* m_pszText[ 3 ] =
            {
                "Andrei", 
                "Anton", 
                "Alex"
            };
 
            printf( "DEBUG: %s\n", m_pszText[ 2 ] );
        }
 
        void Init( );
};
Тут я получаю строку, всё в порядке.

File.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CTest Test;
 
int main(int argc, char *argv[])
{
    Test.Init( );
 
    return getchar();
}
 
 
void CTest::Init( )
{
    printf( "DEBUG: %s\n", m_pszText[ 2 ] );
}
Строка пустая.

DEBUG: Alex
DEBUG: (null)
В чем проблема и как правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 08:23     Как инициализировать массив строк в конструкторе
Посмотрите здесь:

Как инициализировать массив чисел в С++? C++
Как инициализировать массив переменной C++
Как инициализировать двумерный массив? C++
C++ Как инициализировать массив строк?
Можно ли как-то инициализировать массив? C++
Как инициализировать глобальную переменную в зависимости от количества строк в файле C++
Как инициализировать массив в классе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2449 / 1621 / 238
Регистрация: 24.11.2012
Сообщений: 3,989
01.06.2014, 08:26     Как инициализировать массив строк в конструкторе #2
В конструкторе создается локальный массив, который и инициализируется строками. Поле класса остается без изменений.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
01.06.2014, 08:27  [ТС]     Как инициализировать массив строк в конструкторе #3
То есть глобальную переменную в классе ни как не инициализировать?
0x10
2449 / 1621 / 238
Регистрация: 24.11.2012
Сообщений: 3,989
01.06.2014, 08:34     Как инициализировать массив строк в конструкторе #4
Попробую еще по-другому сказать словами...
В конструкторе создается локальный массив. Не создавайте его, а обращайтесь сразу к полю класса.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
01.06.2014, 08:39  [ТС]     Как инициализировать массив строк в конструкторе #5
А как ?
0x10
2449 / 1621 / 238
Регистрация: 24.11.2012
Сообщений: 3,989
01.06.2014, 08:47     Как инициализировать массив строк в конструкторе #6
Как и к любым другим переменным...
C++
1
2
3
4
5
CTest(  )
{
  m_pszText[0] = "foo";
  ...            
}
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.06.2014, 11:21     Как инициализировать массив строк в конструкторе #7
Только всё же не стоит забывать, что указатель должен быть на const char. Т.к. память под изменяемые строки нигде не выделяется.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
01.06.2014, 11:43  [ТС]     Как инициализировать массив строк в конструкторе #8
Tulosba, я вас не понял,а что плохого, что может произойти?
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.06.2014, 12:00     Как инициализировать массив строк в конструкторе #9
pEntity, изменять строки, указатели на которые хранятся в вашем массиве нельзя (т.к. строки могут и, скорее всего, будут размещены в памяти только для чтения), поэтому следует добавить к ним const, чтобы с точки зрения языка они тоже были константны.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 12:18     Как инициализировать массив строк в конструкторе
Еще ссылки по теме:

Как инициализировать массив в dll ? C++
Как мне инициализировать данные в конструкторе C++
C++ Инициализировать массив строк типа std::string
Ошибка: Нельзя инициализировать статические данные в конструкторе C++
C++ Как инициализировать массив ссылок?

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

Или воспользуйтесь поиском по форуму:
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
01.06.2014, 12:18  [ТС]     Как инициализировать массив строк в конструкторе #10
Ага, теперь понятно. Спасибо :-)
Yandex
Объявления
01.06.2014, 12:18     Как инициализировать массив строк в конструкторе
Ответ Создать тему
Опции темы

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