Перейти к содержанию

Программирование Как Оно Есть


call_eax

Рекомендуемые сообщения

Как менять значение указателей (самих указателей, а не структуры)?

Всмысле присвоить указателю заранее известный адрес или перетащить структуру на любой другой адрес?
Ссылка на комментарий
Поделиться на другие сайты

На NULL он ругается в момент присвоения?

Просто это ж стандартная фича вообще для любых указателей, единственное, что приходит в голову это какой-то фишки вектора, но я с ними практически не работал, мне в основном вообще динамические массивы приходилось делать :)

Ссылка на комментарий
Поделиться на другие сайты

Это потому что у тебя массив из 26 векторов

Соответственно тут:

d->pointers = NULL;

получается что ты хочешь присвоить NULL переменной типа vector<dictionary*>. Т.е. "объект = int", на это компилятор и ругается.

Ссылка на комментарий
Поделиться на другие сайты

Areldar

На NULL он ругается в момент присвоения?

Просто это ж стандартная фича вообще для любых указателей, единственное, что приходит в голову это какой-то фишки вектора, но я с ними практически не работал, мне в основном вообще динамические массивы приходилось делать :)

В момент присвоения.

Сама ошибка такая:

no match for 'operator=' in 'd->dictionary::pointers = 0'

Я на 100% уверен, что это просто синтаксическая ошибка. Местами при работе с указателями несколько сложный синтакс.

В данный момент он воспринимает то, что справа от стрелки как сам объект (то есть как будто это *d). Мне надо что он воспринял это указатель (то есть как просто d, если d указатель).

VECTOR

У меня массив из указателей на объект dictionary. Я не знаю как присвоить значение NULL указателю в массиве, сейчас он пытается присвоить это самому объекту dictionary.

Господи, ну почему нигде нет нормального мануала по указателям, где нормально описаны все возможные случаи применения?

Ссылка на комментарий
Поделиться на другие сайты

vector это vector из STL?

Так ведь вот это - правда, разве нет?) :

Это потому что у тебя массив из 26 векторов

Соответственно тут:

d->pointers = NULL;

получается что ты хочешь присвоить NULL переменной типа vector<dictionary*> . Т.е. "объект = int", на это компилятор и ругается.

vector <dictionary*> pointers[26];

Ты хочешь задать параметр n для создающегося объекта, но квадратные скобочки же не передают параметров создания, они для другого, они создают n экземпляров.) Поэтому vector<dictionary*> pointers[26]; явно понимается вроде my_vector_of_pointers_type pointers[26];, а чтобы создать вектор с n компонентами можно например просто вызвать нужный конструктор: vector<dictionary*> pointers(n, NULL);

Ссылка на комментарий
Поделиться на другие сайты

VECTOR

У меня массив из указателей на объект dictionary. Я не знаю как присвоить значение NULL указателю в массиве, сейчас он пытается присвоить это самому объекту dictionary.

Может в голове у тебя и это, но написано в коде другое)

Надо либо вообще не писать [26], либо как предлагает Ashley использовать конструктор. И, кстати, а нужен ли тебе там вектор вообще?

Для массива фиксированного размера будет наверняка лучше:

dictionary* pointers[26];

Ссылка на комментарий
Поделиться на другие сайты

Ashley

VECTOR

Спасибо. Поменял на

dictionary* pointers[26];

BTW, если написать

#include <iostream>
#include <string>
#include <vector>
using namespace std;

struct dictionary {
   bool final;
   vector<dictionary*> pointers(26);
};

, то выдается ошибка

expected `;' before '(' token

Не знаю в чем причина.

Но так как оно сейчас, оно уже работает, в принципе.

Ссылка на комментарий
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...