Как изменить значение члена класса по указателю - PullRequest
0 голосов
/ 13 июня 2018

Эта функция является частью класса ClipInterface, который предоставляет графический интерфейс для редактирования некоторых значений элементов из данного объекта Clip.

Для этого я использую эту функцию, которая получает объект Clip по указателюи затем он получает доступ к некоторым из своих членов, чтобы изменить их следующим образом:

void ClipInterface::update(Clip* _clip){
//p_clip is a pointer declared in the .h file so it can 
//work across the whole class

    p_clip = _clip;

    for (int i = 0; i < p_clip -> stepSequence.size(); ++i){
        stepToggles[i] -> active = p_clip -> stepSequence[i];        
    }

    for (int i = 0; i < p_clip -> stepSequence.size(); ++i){
        *p_clip -> stepSequence[i] = stepToggles[i] -> active;
    }
}

Используя предыдущее выражение, программа компилируется, но затем выдает ошибку ошибки сегментации, когда я пытаюсь запустить ее.

Вопросы:

  • как мне изменить значение члена класса по указателю?я пробовал, что здесь, но я получаю ошибку сегментации.

  • что в этом выражении y вызывает ошибку сегментации?

спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вы можете использовать любой из этих

(*p_clip).stepSequences[i] = stepToggle

Где вы сначала разыменовываете указатель, чтобы получить объект, затем получаете член

Или используйте оператор стрелки, который эквивалентен и имееттот же эффект

p_clip->stepSequences[i] = stepToggle
0 голосов
/ 13 июня 2018
*p_clip -> stepSequence[i] = stepToggles[i] -> active;

здесь p_clip уже является указателем, который вы должны использовать;

p_clip -> stepSequence[i] = stepToggles[i] -> active;

Чтобы получить доступ к элементам структуры через указатель, используйте оператор стрелки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...