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

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

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

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

01.06.2014, 08:23. Просмотров 338. Ответов 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++
//Файл содержит определение функций класса Invoice #include <iostream> using std::cout; using std::endl; #include <string> ...

Инициализировать массив строк типа std::string - C++
Есть массив из строк, надо присвоить ему значения. Возникла странная проблема. Вот код: string StrName; i = 1; while ( i...

Ошибка: Нельзя инициализировать статические данные в конструкторе - C++
Ошибка: Нельзя инициализировать статические данные в конструкторе. //#include <string.h> #include <stdio.h> //#include <conio.h> ...

Как инициализировать глобальную переменную в зависимости от количества строк в файле - C++
Есть переменная типа int glob = 3; объявлена в не main(), т.е. глобальная. После неё, тоже не в mаin, объявлены структуры ex: struct...

Как инициализировать массив в классе - C++
private: static char const figury_={0,4,0,0, 0,1,0,3, 2,1,0,3, 0,2,0,2, 1,2,0,2, ...

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

Как инициализировать массив ссылок? - C++
//--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> #pragma hdrstop ...

Как инициализировать массив переменной - C++
Всем доброго времени суток! у меня возникла проблема, мне нужно инициализировать статический массив с помощью переменной, т.е. пользователь...

Как инициализировать массив в dll ? - C++
Экспериментирую с dll. Сделал графическую функцию, которая рассчитывает расстояние между точками в цикле. Хочу оптимизировать ее, чтоб...

Как инициализировать такой массив - C++
Нужно в проге(консольное приложение Win32) испоьзовать массив таких размеров double massiv_resultatov={0}; просто так я не смог его...


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

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

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