Ошибки, баги, вопросы - страница 1119

 

Ошибка компиляции: компилятор решил, что я передаю указатель по ссылке

class A {
};

void f1( A*  a ) {}
void f2( int a ) {}

void OnStart()
{
        A* const a1 = new A();
        f1( a1 ); // ошибка компиляции: constant variable cannot be as reference
        const int a2 = 1;
        f2( a2 ); //все нормально
}

Если написать f1( A* const a ), то все компилируется, НО я же не пишу f2( const int a ) и в случае с f2( int a ) компилятор все понимает правильно 


по сути
f1( A*  a ) отличается от f1( A* const  a )
тем же, чем
f2( int a ) отличается от f2( const int a )
тогда и в f2( a2 ) тоже должна была бы быть ошибка
 
Lone_Irbis:

Сюда выкладывать код целиком и .set к нему как-то не хотелось бы, но могу куда-нибудь прислать. 

Спасибо! Попробуем воспроизвести. Код можно прислать в сервисдеск (после всех проверок он будет гарантировано удален).
 

Нельзя удалить указатель const A*

class A {
};

void OnStart()
{
        const A *a = new A;
        delete( a ); //ошибка компиляции: constant cannot be modified
}

На первый взгляд логично - delete вызывает деструктор ~A(), а он не может быть const             (***)

НО тогда принципиально нельзя было бы удалить объект в следующем примере

void f()
{
    const A a;
}

поскольку при выходе из f() все равно вызывается деструктор, который не может быть const, и следовательно довод (***) не работает

Кроме того С++ компилятор не препятствует delete( a ), даже если аргумент объявлен как const A * (деструктор потому и не может быть объявлен как const, поскольку вызывается для любых, в т.ч. не const объектов)

 
перестал считаться рейтинг за сообщения(
 
GriFFon4ik:
перестал считаться рейтинг за сообщения(
Да, перестал ...
 
GriFFon4ik:
перестал считаться рейтинг за сообщения(
Ну и ладно.
 
barabashkakvn:
Ну и ладно.
 печалька :-(
 

Я тут постом проверил - не увеличилось. Может там какая хитрая улучшенная формула ...

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Интересное и Юмор

newdigital, 2014.04.09 14:23

Надо запретить думать - это оскорбляет!

Строчки вяжутся в стишок,
Море лижет сушу.
Дети какают в горшок,
Взрослые же - в душу.

Да и бог с ним, с рейтингом.
 
newdigital:

Я тут постом проверил - не увеличилось. Может там какая хитрая улучшенная формула ...

Да и бог с ним, с рейтингом.
 ЗАРАБОТАЛО) хотя нет(
 
Перестал считаться рейтинг за сообщения на форуме (
Ошибки , веб-сайт mql5.com , закрытое , инициативе: 2014.04.09 14:07 , # 993171

Перестал считаться рейтинг за сообщения на форуме (



Группа поддержки 2014.04.09 15:27
Почему вы так решили?
GriFFon4ik 2014.04.09 17:38
ну раньше было написал комент, рейтинг сразу +1, а сейчас нет "+1 сразу"
Группа поддержки 2014.04.09 17:38

Теперь рейтинги будут начислятся периодически, с задержкой

Причина обращения: