C ++ - Сделать объектную часть объектной константы [duplicate]

Мы пробовали этот год назад с Indy и встроенным cid: изображения вроде этого: https://forums.codegear.com/thread.jspa?threadID=17473

Мы никогда не получал его стабильным, каждый раз, когда был еще один почтовый читатель, который был заблокирован (если мы его работаем в Outlook, то Thunderbird не принимал его, или Outlook Express, или, и т. д. и т. д.).

В в конце мы сделали это с .NET, используя AspNetEmail , и он работал как шарм.

- jeroen

3
задан karadoc 18 September 2011 в 07:27
поделиться

3 ответа

7
ответ дан Nawaz 15 August 2018 в 20:38
поделиться

Невозможно делать то, что вы хотите. Ваша функция-член-член не может изменить значение данных (адрес, на который он указывает), но нет ничего о том, чтобы не изменять содержимое, на которое оно указывает, как вы уже заметили. Использование функции std::vector помогло бы, поскольку внутри функции-члена const вы имели бы вектор-константу, не имея возможности вызвать какую-либо из ее изменяемых функций.

4
ответ дан K-ballo 15 August 2018 в 20:38
поделиться

Причина, по которой вы должны использовать std :: vector, на самом деле потому, что вы хотите сохранить коллекцию int, а не указатель int, поэтому почему бы не использовать ее?

Это также решило бы ваш const ' ness issue.

Вот как это работает: объявление метода const приведет к тому, что все члены класса будут const. В вашем случае это означает, что в области метода ваш член data станет постоянным указателем на int. Это означает, что вы можете изменить значение int (также означая членов массива), пока data указывает на то же место. Используя std::vector, данные станут константой std::vector, на которую вы могли бы вызывать только функции const. Поэтому да, вы должны использовать std::vector.

4
ответ дан Luchian Grigore 15 August 2018 в 20:38
поделиться
  • 1
    Согласен. Я хочу хранить коллекцию ints, и я думаю, что вектор будет правильным выбором - однако этот конкретный код наследуется. то есть. Я этого не писал. Поэтому я не уверен, что стоит беспокоиться об изменении всех int * на vector & lt; int & gt; ... – karadoc 22 September 2011 в 05:35
  • 2
    Независимо ... Код устаревшего кода не всегда хорош, вам следует поговорить с тем, кто управляет кодом и просить его изменить. – Luchian Grigore 22 September 2011 в 07:05
Другие вопросы по тегам:

Похожие вопросы: