Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: указатели
Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Почитал предложенные ссылки, проверил на доступных сейчас компиляторах
Код: Выделить весь код
if (int ok(123))
{
}
Один считает это синтаксической ошибкой, другой уточняет, что ему не нравится инициализация переменной в условии.
Если цель стояла в создании класса и приведении его к bool, можно было сделать: if (SomeClass(123)) ...
[code]
class A
{
public:
explicit A(int) {}
operator bool() const {return false;}
};

int main()
{
for(A a (123); A b(123)/*ошибка*/; ) {}

if (A a(123)/*ошибка*/)
{
///
}

return 0;
}
[code]
Короче, я понял, что дело в объявлении переменных:
Код: Выделить весь код
bool(A a(123))
- ошибка

По поводу "пыльных углов":
попродуйте код:
Код: Выделить весь код
std::vector<A*> as;
// fill some way with operator new

std::for_each(as.begin(), as.end(), delete);
Ничего не уничтожится.

Отправлено: 13:00, 22-12-2005 | #7

Название темы: указатели