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

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

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    >Чтобы была структура с полями, эти поля были доступны (н-р, s.path), но только для чтения.
    RO - const, c инициализацией в конструкторе.
    RO c мемберами в одном экземляре для всех инстансов так:
    Код (Text):
    1. struct TYPE {
    2.   static const int cofile = 10;
    3.   static const int aug = 23;
    4.   static const char path[];
    5. } s;
    6. const char TYPE::path[]="Andrey";
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    а экземпляр s зачем?
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    >а экземпляр s зачем?
    Да, не нужено. Оставил как было в оригинале.
     
  4. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Здравствуйте.
    Почему при множественном наследовании не обрабатываются все сообщения и как это исправить?
    mylistctrl.h:
    Код (Text):
    1. #include "BaseListCtrl.h"
    2. #include "EditListCtrl.h"
    3. #include "DragDropListCtrl.h"
    4.  
    5. class CMyListCtrl : virtual public CBaseListCtrl,
    6.                     virtual public CEditListCtrl,
    7.                     virtual public CDragDropListCtrl
    8. {
    9. private:
    10.     int x;
    11.  
    12. public:
    13.     CMyListCtrl();
    14.     using CBaseListCtrl::SubclassDlgItem; // FIX Compiler Error C2385
    15.  
    16. // Implementation
    17. protected:
    18.     //DECLARE_MESSAGE_MAP()
    19. };
    .
    baselistctrl.h:
    Код (Text):
    1. class CBaseListCtrl : public CListCtrl
    2. {
    3. ...
    4.  
    5. // Implementation
    6. public:
    7.     afx_msg void OnRButtonDown( UINT, CPoint ); // это работает
    8.     DECLARE_MESSAGE_MAP()
    9. };
    .
    baselistctrl.cpp:
    Код (Text):
    1. #include "BaseListCtrl.h"
    2.  
    3. BEGIN_MESSAGE_MAP(CBaseListCtrl, CListCtrl)
    4.     ON_WM_RBUTTONDOWN()
    5. END_MESSAGE_MAP()
    6.  
    7. //--------------------------------------------------------------------------------
    8. void CBaseListCtrl::OnRButtonDown(UINT nFlags,CPoint point)
    9. {
    10.     ...
    .
    editlistctrl.h:
    Код (Text):
    1. class CEditListCtrl : public CListCtrl
    2. {
    3. ...
    4.  
    5. // Implementation
    6. public:
    7.     afx_msg void OnLButtonDblClk( UINT, CPoint );
    8.     DECLARE_MESSAGE_MAP()
    9. };
    .
    editlistctrl.cpp:
    Код (Text):
    1. #include "EditListCtrl.h"
    2.  
    3. BEGIN_MESSAGE_MAP(CEditListCtrl, CListCtrl)
    4.     ON_WM_LBUTTONDBLCLK()
    5. END_MESSAGE_MAP()
    6.  
    7. //--------------------------------------------------------------------------------
    8. void CEditListCtrl::OnLButtonDblClk( UINT nFlags,CPoint point )
    9. {
    10.     ... // это НЕ работает
    .
    Dialog.cpp:
    Код (Text):
    1. void Clc1Dlg::DoDataExchange(CDataExchange* pDX)
    2. {
    3.     CDialog::DoDataExchange(pDX);
    4.     DDX_Control(pDX, IDC_LIST1, (CWnd&)MyListCtrl);
    5. }
    6. //--------------------------------------------------------------------------------
    7. BOOL Clc1Dlg::OnInitDialog()
    8. {
    9.     MyListCtrl->SubclassDlgItem(IDC_LIST1,this);
    10.     CDialog::OnInitDialog();
    11.     CenterWindow();
    12.     ...
    Возможно это из-за using SubclassDlgItem()...
     
  5. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Спасибо, Booster
    Код (Text):
    1. struct TYPE {
    2.   static const int cofile = 10;
    3.   static const int aug = 23;
    4.   static const char path[];
    5. } s;
    6. const char TYPE::path[]="Andrey";
    А нельзя ли не писать 'static const' перед всеми полями? Знаю что в Си++ классы доступа можно писать вот так:
    Код (Text):
    1. class NameClass {
    2. private:
    3. ...
    4. public:
    5. ...
    6. };
    Нельзя ли также с типами в Си? Или в Си++?
     
  6. Fedor666

    Fedor666 Fedor

    Публикаций:
    0
    Регистрация:
    27 май 2009
    Сообщения:
    30
    Адрес:
    М.О., г.Королев
    Прошу прощения за глупый вопрос, но я только начал изучать С++ после асма. Когда я увидел сколько типов данных в С, поплохело:dntknw: HWND, HMENU, HINSTANCE, WPARAM, LPARAM и т.д. Но ведь это все всего лишь двойные слова т.е. INT. В связи с чем вопрос: а нельзя ли все это безобразие переделать в простой INT какой-нибудь хитрой директивой? Заранее спасибо, а то путаюсь очень.
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    вот если переделаешь в инт все, тогда точно путаться будешь
     
  8. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    Fedor666
    это типы из windows.h, при чем тут C++ ? :) он тут еще не начался даже.

    такой подход ни к чему хорошему не приведет.

    как можно HWND спутать с HMENU или там с HINSTANCE ? :)
    запомнить их не так сложно.
     
  9. Fedor666

    Fedor666 Fedor

    Публикаций:
    0
    Регистрация:
    27 май 2009
    Сообщения:
    30
    Адрес:
    М.О., г.Королев
    Но какая-нибудь директива такая есть?
     
  10. Fedor666

    Fedor666 Fedor

    Публикаций:
    0
    Регистрация:
    27 май 2009
    Сообщения:
    30
    Адрес:
    М.О., г.Королев
    Но их там миллионы разных...
     
  11. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    неправда
     
  12. staper

    staper New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    18
    Здравствуйте. Есть структура:

    struct NOTEBOOK{
    union {
    int x;
    int y;}disp_res;
    int f;
    float d;
    int price;
    char model[21];};

    и файл, содержащий N таких структур (научился сохранять). Каким образом считать данные для того, чтобы ими оперировать?
     
  13. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    как писал - так и читай %)
     
  14. staper

    staper New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    18
    Угу! Вот только ничего не получается! Считать однократно в структуру - не проблема, а вот всё целиком... (третий день в С, знаю, что хиловато)
     
  15. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    эм.. читай в массив структур, или в одну и ту же, по очереди
     
  16. staper

    staper New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    18
    Пожалуйста, подскажите, как исправить ошибку.

    struct NOTEBOOK {
    struct disp_res{
    int x,y;
    };
    int f;
    float d;
    int price;
    char model[21];
    };
    struct NOTEBOOK a[1];

    int i = a[0].disp_res.x; //error: invalid use of `struct NOTEBOOK::disp_res'
     
  17. staper

    staper New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    18
    Вопрос решёнч через

    struct dispres{
    int x,y;
    };

    struct NOTEBOOK{
    dispres disp_res;
    int f;
    float d;
    int price;
    char model[21];
    };
     
  18. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    staper
    Как вариант:
    Код (Text):
    1. struct NOTEBOOK
    2. {
    3.     struct DispRes
    4.     {
    5.         int x,y;
    6.     } disp_res;
    7.     int f;
    8.     float d;
    9.     int price;
    10.     char model[21];
    11. };
    12. struct NOTEBOOK a[1];
    13.  
    14. int i = a[0].disp_res.x;
    только осторожнее - это в сях и в плюсах работает по-разному.
     
  19. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Дуп в WASM.BEGINNERS (подумалось, может тут быстрее ответят?)

    Как реализовать на СИ простой алгоритм поиска подстроки в строке?
    У меня без GOTO не получается :'(
     
  20. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Код (Text):
    1. char* find(char* substr, char* str)
    2. {
    3.    for(;*str;++str)
    4.    {
    5.       if(*str==*substr)
    6.       {
    7.           char* substr_pos=substr;
    8.           char* str_pos=str;
    9.           for(;*substr_pos==*str || !*substr_pos;++substr_pos,++str_pos)
    10.               ;
    11.           if(!*substr_pos)
    12.             return str;
    13.       }
    14.    }
    15.    return 0;
    16. }