Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Объясните, пож-та, почему выдает ошибку: Ошибка 1 error C2662: int TGAImage::getWidth(void): невозможно преобразовать указатель "this" из "const TGAImage" в "TGAImage &" d:\....\tgaimage.cpp 23 1 ConsoleApplication3 Код: plaintext 1. 2. 3. 4. 5. 6. и это притом, что поля у меня защищенные Код: plaintext 1. 2. 3. 4. 5. 6. как же тогда я получаю доступ к полю img.width вот здесь: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 01:31 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дня, 1) protected тут вообще не причем 2) Ошибка вызвана тем что img это у вас константная ссылка, а функция getWidth() в этом объекте может быть вызвана только для неконстантных объектов. Вам надо изменить ее объявление на такое: Код: plaintext 1. 2. 3. 4. Почитайте про модификатор const для методов класса. Например тут http://www.parashift.com/c -faq/const-member-fns.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 02:13 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, спасибо а почему получалось достучаться до protected поля ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 04:23 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дняAnatoly Moskovsky, спасибо а почему получалось достучаться до protected поля ? а почему не должно получиться? поле же не private, к тому же это код данного класса, а не другого, он имеет доступ ко всем полям, в том числе и даже private. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 09:30 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
MasterZivГерой дняAnatoly Moskovsky, спасибо а почему получалось достучаться до protected поля ? а почему не должно получиться? поле же не private, к тому же это код данного класса, а не другого, он имеет доступ ко всем полям, в том числе и даже private. по логике не должно получиться потому, что в метод передается объект по ссылке, это же другой объект, не this вот поэтому не могу понять причины такого поведения инкапсуляции, ведь у Страуструпа написано: авторПопулярно следующее толкование защищенных (protected) членов ([Stroustrup3e], 15.3): Если член защищен, его имя может использоваться только в функциях-членах и друзьях класса, в котором он объявлен, и классов, производных от него . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:09 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой днявот поэтому не могу понять причины такого поведения инкапсуляции, ведь у Страуструпа написано:это потому что ты путаешь объект и экземпляр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:25 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дняпо логике не должно получиться потому, что в метод передается объект по ссылке, это же другой объект, не this Ну а класс-то , класс -- тот же ? Правильно ? Только один язык в мире так трактует доступ к членам объекта -- Smalltalk. Ты его изучал как первый ? Сомниваюсь. А во всех остальных языках программирования члены класса либо вообще не защищены ни от кого, либо защищены только на основе класса кода, который их использует. [quot Герой дня] вот поэтому не могу понять причины такого поведения инкапсуляции, ведь у Страуструпа написано: авторПопулярно следующее толкование защищенных (protected) членов ([Stroustrup3e], 15.3): Если член защищен, его имя может использоваться только в функциях-членах и друзьях класса, в котором он объявлен, и классов, производных от него . Ну, у тебя же как раз такая функция. TGAImage::TGAImage Функция класса TGAImage. width как я понимаю -- член класса TGAImage, нестатический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 19:08 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Понятно, то есть внутри класса можно получить доступ к полям объекта этого же класса, даже если они protected ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 19:35 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дняMasterZiv, Понятно, то есть внутри класса можно получить доступ к полям объекта этого же класса, даже если они protected Нифига тебе не понятно. Внутри кода класса можно получить доступ ко всем полям и методам данного класса, а также к public и protected полям и методам классов-предков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 19:47 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
MasterZivВнутри кода класса можно получить доступ ко всем полям и методам данного класса, Нет. К приватным полям другого экземпляра ты доступа не получишь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 20:32 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНет. К приватным полям другого экземпляра ты доступа не получишь. Получишь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 20:37 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПолучишь )) Да, если сам себя объявишь френдом. Но это изврат. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 21:00 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 21:28 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДа, если сам себя объявишь френдом. Но это изврат. Вам пора освежить знания о С++. Если все было так как вы пишете, то тривиальный конструктор копирования надо было бы делать через такие извращения, что все бы умерли со смеху )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 21:29 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВам пора освежить знания о С++. Нет, мне пора принять таблетки от склероза. Я мучился с copy-конструктором у наследника. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 21:47 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНет, мне пора принять таблетки от склероза. Я мучился с copy-конструктором у наследника. Бывает. Но в принципе, и там мучений никаких не должно быть: наследник вызывает к-тор предка, а потом копирует свою часть полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 21:53 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 23:19 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyПолучишь )) Да, если сам себя объявишь френдом. Но это изврат. У вас там что, коллективное помешательство ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2015, 18:23 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дняОбъясните, пож-та, почему выдает ошибку: Ошибка 1 error C2662: int TGAImage::getWidth(void): невозможно преобразовать указатель "this" из "const TGAImage" в "TGAImage &" d:\....\tgaimage.cpp 23 1 ConsoleApplication3 Код: plaintext 1. 2. 3. 4. 5. 6. и это притом, что поля у меня защищенные Код: plaintext 1. 2. 3. 4. 5. 6. как же тогда я получаю доступ к полю img.width вот здесь: Код: plaintext 1. Вы не туда смотрите. все гораздо проще список для неумолчательной инициализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 21:22 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
onstat-, Не вижу там похожей ситуации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 21:30 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дняonstat-, Не вижу там похожей ситуации Для того что бы точно понять похожа или нет нужно знать что внутри width = img.getWidth(); И почему можно или нельзя исопльзовать width = img.getWidth() const; Я не понимаю зачем инициализировать поле класса через интерфейс или через присвоение в теле . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 00:49 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
onstat-, на случай ловли моментов, когда изменяется поле... а так будете искать по огромному коду место изменения поля и вот такая запись разрешается Код: plaintext 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 01:53 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Смотри-ка. Сбылось )) MasterZivНифига тебе не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 02:04 |
|
||
|
Конструктор с ошибкой
|
|||
|---|---|---|---|
|
#18+
Герой дняи вот такая запись разрешается Код: plaintext 1. ? Нет. Вот это единственный вариант: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 02:05 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=50&tid=2019093]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
102ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 201ms |

| 0 / 0 |
