Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Откуда такое ограничение. 
:(
    Опции темы
mes
Дата 18.12.2010, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(boostcoder @  17.12.2010,  23:55 Найти цитируемый пост)
 еще реализовали Range-based for  

уже написано оказывается.. не заметил 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 18.12.2010, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(mes @  18.12.2010,  01:12 Найти цитируемый пост)
уже написано оказывается

реализовано в 4.6.0. но эта ветка считается экспериментальной. что-то я ей недоверяю...

PM WWW   Вверх
KuMa1104
Дата 18.12.2010, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Хотя вот знаете что ещё немного смущает.

Цитата(Чoо @  18.12.2010,  00:31 Найти цитируемый пост)
class bbb
{
public:
    static const int ab;
    static const int e[];
};
const int bbb::ab = 7;
const int bbb::e[] = {1,3};


Зачем повторно указывать const int
Код

const int bbb::ab = 7;
const int bbb::e[] = {1,3}

Разве того что я их уже так декларировал в определении не достаточно?


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
mes
Дата 18.12.2010, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KuMa1104 @  18.12.2010,  00:19 Найти цитируемый пост)
Разве того что я их уже так декларировал в определении не достаточно? 

c++  потому что  smile smile 
Код

bbb::ab = 7 //  это не определение(с инициализацией), а простое присваивание.. 


Это сообщение отредактировал(а) mes - 18.12.2010, 01:22


--------------------
PM MAIL WWW   Вверх
KuMa1104
Дата 18.12.2010, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Цитата(mes @  18.12.2010,  01:21 Найти цитируемый пост)
bbb::ab = 7 это не определение(с инициализацией), а простое присваивание.. 


Огого!!!

Хорошо. Значит если я напишу 
Код

bbb::ab = 7 


То компилятор это будет считать как простое присваивание. И будет Ругаться так как я пытаюсь константе значение поменять!!!!!

Мда.. Суровая штука!!!!!!!!!!!!!!!!!!!!


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
mes
Дата 18.12.2010, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KuMa1104 @  18.12.2010,  00:26 Найти цитируемый пост)
И будет Ругаться так как я пытаюсь константе значение поменять!!!!!

и не только поэтому.. потому что присваивание не разрешено не в контексте функций... 
т.е. там где должны произвести инициализацию статических переменных.. 
smile 
т.е. даже если не константа, то все равно заорет.. smile


--------------------
PM MAIL WWW   Вверх
KuMa1104
Дата 18.12.2010, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Да действительно. Заорала.

Цитата(mes @  18.12.2010,  01:29 Найти цитируемый пост)
и не только поэтому.. потому что присваивание не разрешено не в контексте функций... 
т.е. там где должны произвести инициализацию статических переменных.. 
 
т.е. даже если не константа, то все равно заорет..  


А это для меня был сюрприз. хотя это логично.

1. потому что присваивание не разрешено не в контексте функций... 
С этим понятно было бы странно еслиб я где угодно это мог бы сделать.

Хотя вот так тоже почему то нельзя. Хотя присваивание идёт в функции.
Код

namespace Helper
{
    static class BaseConstant
    {
    public:
        BaseConstant(void);
        ~BaseConstant(void);
        static int ab;
    };
}

Код

#include "BaseConstant.h"

int _tmain(int argc, _TCHAR* argv[])
{
    Helper::BaseConstant b;

    Helper::BaseConstant::ab = 8;  //Error !!!!!!!!!!!!!!!!!!!
    
    return 0;
}


Добавлено через 2 минуты и 58 секунд
По идеи. У меня одно ab для всех экземпляров класса BaseConstant.

Код

Error    2    error LNK2001: unresolved external symbol "public: static int Helper::BaseConstant::ab" (?ab@BaseConstant@Helper@@2HA)    MethodPartialArea.obj    MethodPartialArea


Но её не видно!


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
mes
Дата 18.12.2010, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KuMa1104 @  18.12.2010,  00:45 Найти цитируемый пост)
 static class

в C++ нет статических классов как в шарпе  smile 


Цитата(KuMa1104 @  18.12.2010,  00:45 Найти цитируемый пост)
По идеи. У меня одно ab для всех экземпляров класса BaseConstant.

у вас аб declared, но не defined.. чтоб был defined нужен инициализатор..

Добавлено через 1 минуту и 24 секунды
Цитата(KuMa1104 @  18.12.2010,  00:45 Найти цитируемый пост)
Но её не видно! 

ее видно, но для нее не выделено место в памяти.. так как компилер не знает в каком из (cpp-) модулей ее выделять smile

Добавлено через 1 минуту и 51 секунду
и поправьте пож Ваш пост.. читать неудобно .. 



--------------------
PM MAIL WWW   Вверх
KuMa1104
Дата 18.12.2010, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Цитата(mes @  18.12.2010,  01:52 Найти цитируемый пост)
в C++ нет статических классов как в шарпе   


Да Вы правы smile . Я ни где ни видел что бы так делали. Это на уровне инстинкта(((

Значит раз мне компилятор не выдавал ошибок то он игнорировал это определение!!

Цитата(mes @  18.12.2010,  01:52 Найти цитируемый пост)
у вас аб declared, но не defined.. чтоб был defined нужен инициализатор.. 


Точно теперь понял!!!!

Спасибо вам большое, если бы было можно яб Вам 10 плюсов поставил бы. А то один как то за ткое хорошее объяснение это как то даже не серьёзно))))


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
Чoо
Дата 18.12.2010, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Цитата(KuMa1104 @ 18.12.2010,  00:48)
И вот так тоже нельзя
Код

class bbb
{
public:
    const int ab = 7;        // Error
};

видимо по тойже причине.

зато можно так smile
Код

class bbb
{
public:
    const int ab; 
    bbb():ab(7) {};
};


Добавлено через 1 минуту и 36 секунд
правда такая константа создается для каждого объекта

Это сообщение отредактировал(а) Чoо - 18.12.2010, 02:14


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
KuMa1104
Дата 18.12.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Цитата(Чoо @  18.12.2010,  02:13 Найти цитируемый пост)
class bbb
class bbb
{
public:
    const int ab; 
    bbb():ab(7) {};
};


А как это понять. 

Здесь происходит наследование(что само по себе звучит странно), или это способ указать что при использовании данного конструктора должна происходить инициализация ab значением 7. (внутренний инициализатор получается )




--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
mes
Дата 18.12.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(KuMa1104 @  18.12.2010,  12:04 Найти цитируемый пост)
или это способ указать что при использовании данного конструктора должна происходить инициализация ab значением 7. (внутренний инициализатор получается )

 smile 

читайте про "список инициализации".. 


--------------------
PM MAIL WWW   Вверх
KuMa1104
Дата 18.12.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3




Цитата(mes @  18.12.2010,  13:13 Найти цитируемый пост)
читайте про "список инициализации"..


Окsmile 



--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
Чoо
Дата 18.12.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



KuMa1104, да, это инициализация константного члена класса в списке инициализации конструктора smile. Но вот со статиком такое не пройдет.


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.