Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. Keva

    Keva New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    130
    twgt
    Благодарю за ответ на глупый вопрос!
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    twgt
    Вопрос понят неверно!
    cin >> str;
    мне не надо, просто посимвольно запонить список до энтера и усе!
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    gets
    cin.gets
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    n0name
    Спасиб.

    PS использую get, а не gets, но на это свои причины.
     
  5. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    каким образом в С++ принято инициализировать структуру в конструкторе класса, являющуюся членом класса?

    gcc на мою структуру типа:
    Код (Text):
    1. struct point2d
    2.  
    3. {
    4.  
    5.     int x;
    6.  
    7.     int y;
    8.  
    9. };
    ругается
    когда я инициализю в конструкторе след. образом:
    Код (Text):
    1. CMyClass::CMyClass()
    2. {
    3.   _s.x = _s.y = 0;
    4. }
    понятно, что и так можно делать, но тем не менее? каким образом можно сделать что-то типа:
    Код (Text):
    1. CMyClass::CMyClass()
    2. : _s(0,0)
    3. {
    4. }
    ?
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    varnie
    Код (Text):
    1. typedef struct point_t {
    2.   int x, y;
    3.   point_t(int x, int y) : x(x), y(y) {;}
    4. } point_t;
    5.  
    6. class point {
    7. public:
    8.   point(int x, int y) : p(x, y) {;}
    9. private:
    10.   point_t p;
    11. };
    12.  
    13. int main() { return 0; }
    ICE?
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    varnie
    Определи инициализирующий конструктор для структуры.

    censored
    А смысл дублирования структуры в класс? Впрочем, вопрос риторический.
     
  8. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    censored,
    ICE, спасибо!
     
  9. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Зачем в С++ typedef для структуры?
    Зачем в классе размещать структуру, в С++ - структура это тот же класс, отличие лишь в видимости переменных по умолчанию.
     
  10. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Novi4ek
    верно.

    ну, у меня изначально загвоздка была в том, что мне ненравилось хранить в моем классе приватные члены int _x, int _y, которые по смыслу в моей проге должны были представлять ничто иное как координаты точки. я потому и захотел занести их в структуру (просто с 2-мя public членами _x и _y, и всё), а в классе хранить переменную типа этой структуры.
    по мне, так это удобней и нагляднее в таком случае было бы.

    а про дублирование структуры в класс, как предложил выше мне censored уважаемый IceStudent уже высказался:
     
  11. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    можно ли что-то сделать, если на определенном 'шаге' программы не-const переменную хочется сделать const, т.к. далее по коду её значение не следует менять. можно ли это сделать без ввода дополнительной const переменной и инициализации её (этой const версии) значением исходной переменной? ведь const_cast к одной и той же переменной сделать нельзя.
    т.е. значение нужно 'залочить' для дальнейшего юзанья, если так можно выразиться.
    благодарен за пояснение.
     
  12. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    varnie
    наверное глупо, но может создать на этом "шаге" const ссылку на не const переменную?!
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    varnie
    Если в пределах функции, то только новая константная сущность (указатель/ссылка/переменная). А так - в вызываемых функциях указывай константные параметры. A const_cast обычно используется для снятия константности, использование его для "придания константности" не имеет практического смысла. Хотя, пишут же implicit_cast..
     
  14. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    IceStudent
    да, именно в
    . ну, вопрос разъяснен теперь, спасибо:)
    а про const_cast я вкурсе.
     
  15. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    рыскал на koders.com в целях изучения некоторых применяющихся техник программирования на С++, и наткнулся на след. кусок кода:
    смущает использование std::auto_ptr для работы с массивом, ведь при выходе из поля видимости/удалении такого объекта им вызовется delete; а не delete [] (о чем тот же Саттер писал).
    ход моих мыслей верен или нет и здесь у автора все окей? спасибо за пояснение.
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    varnie
    Дело в том, что контейнера для "сырой памяти" нет (ближе к нему - std::vector). А на данный момент для простых типов реализации delete и deletе[] равнозначны, поэтому люди и используют std::auto_ptr как обёртку над указателем. Естесственно, это неправильно, но не является ошибкой.
     
  17. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Что в си выполняет using?
    Например, чем отличается 'using std::complex' от 'using std::complex<double>' или 'using std::complex<float>'
    если все переменные у меня описываются как complex<float>?
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    twgt
    В сях нету using, imho. В С++ это ключевое слово вводит тип/прoстранство имён в текущую область видимости/пространство имён. Почитай Страуструпа, там подробно расписано.

    Типичное использование:
    1) using namespace std; // вводит все идентификаторы из std в текущее пространство имён. В результате std:: можно опускать.
    2) using std::string; // вводит только std::string.

    Об остальных возможностях читай в доке/книгах.

    error C2873: 'std::complex<float>' : symbol cannot be used in a using-declaration

    Используй typedef:

    typedef std::complex<float> floatcomplex;
    foatcomplex x,y,z;
     
  19. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Говоря си я конечно же имею ввиду с++ :)
    В какой книге Страуструпа это описанно? В 'Язык программирования С++' не увидел.
    С2873 у меня не выдает(MS C++ 6.0 SE)
    Спасибо за typedef, не знал :)
     
  20. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    twgt
    вы сколько на с\с++ пишите? (просто интересно)