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

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

  1. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    *рабочая версия :
    http://codepad.org/CLjlajRM


    // верните редактирование =\
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GoldFinch

    o_O а можно поподробнее?
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    _DEN_
    http://ru.wikipedia.org/wiki/Objective-C
     
  4. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    поддержка-то лучше, а вот компилятор генерирует много "лишнего (rtl)" кода (в частности, gcc).
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GoldFinch

    Я конечно рад, что ты умеешь пользоваться википедией :) Меня больше интересовало, откуда ты взял вот этот бред: "в С++ поддержка ООП есть, а в Object C поддержка ООП лучше чем в С++"? Можно как-то аргументировать?
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    _DEN_, прочитай как поддержка ООП реализована там и там, и все будет ясно. перепечатывать текст мне лень.
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GoldFinch

    Ну давай, давай, расскажи мне, как же реализовано ООП в C++ :)))))))))))))
     
  8. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    _DEN_
    Как-как... Сказано же - хуже!
    :)
     
  9. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    спасибо огромное!!!!
     
  10. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    Народ, помогите еще с одной задачкой.
    У нас ООП, а я с классами особо не дружу.

    буду оч. благодарен
     
  11. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    Под конец рабочего дня ужо башка не варит...
    Не могу записать DWORD в выделеную память:
    HGLOBAL hMem = GlobalAlloc(GMEM_FIXED, dwBuffers[1]);
    а здесь надо записать в hMem по смещению 0 и 4 числа (DWORD).
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    MirrorBlack GlobalLock?
     
  13. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    GoldFinch
    Зачем GlobalLock если флаг GMEM_FIXED?
    Имелось в виду такое:
    invoke GlobalAlloc,GMEM_FIXED,256
    mov dword ptr [eax],0
    mov dword ptr [eax+4],1

    Пока наконстролябил следующее:
    HGLOBAL hMem = GlobalAlloc(GMEM_FIXED, 256);
    DWORD* hMemDW = (DWORD*) hMem;
    hMemDW[0] = NULL;
    hMemDW[1] = 1;
    Правильно?
     
  14. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    правильно
    можно
    *(DWORD*) hMem =NULL;
    *((DWORD*) hMem+1) = 1;
     
  15. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    GoldFinch
    Спасибо.
     
  16. dmicarus

    dmicarus New Member

    Публикаций:
    0
    Регистрация:
    25 май 2009
    Сообщения:
    17
    Есть длл экспортирующая функцию, которая генерирует исключение. При попытке поймать это исключение в основном модуле, все указатели объекта исключения становятся инвалидными.
    К примеру
    Код (Text):
    1. [i]Export.h[/i]
    2.  
    3. #include <windows.h>
    4. #include <string>
    5. #ifdef USE_MY_DLL_EXPORT
    6. #define DLL_EXPORT __declspec(dllexport)
    7. #else
    8. #define DLL_EXPORT __declspec(dllimport)
    9. #endif
    10.  
    11. class Error
    12. {
    13. public:
    14.     Error()
    15.     {
    16.         pStr = new std::string("aaa");
    17.     }
    18.     ~Error()
    19.     {
    20.         delete pStr;
    21.     }
    22.  
    23.     std::string* pStr;
    24. };
    25.  
    26. DLL_EXPORT void ExportFunction();
    Код (Text):
    1. [i]Export.cpp[/i]
    2.  
    3. #define USE_MY_DLL_EXPORT
    4.  
    5. #include "Export.h"
    6.  
    7. void DLL_EXPORT ExportFunction()
    8. {
    9.     throw Error();
    10. }
    Код (Text):
    1. [i]main.cpp[/i]
    2.  
    3. #include "Export.h"
    4.  
    5. int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    6. {
    7.     try
    8.     {
    9.         ExportFunction();
    10.     }
    11.     catch (Error error)
    12.     {
    13.         // при попытке использования error.pStr происходит access violation
    14.     }
    15.  
    16. }
     
  17. dmicarus

    dmicarus New Member

    Публикаций:
    0
    Регистрация:
    25 май 2009
    Сообщения:
    17
    Я так понял для Error нужно задефинить copy constructor ?
    вроде
    Код (Text):
    1.     Error(const Error& error)
    2.     {
    3.         pStr = new std::string(error.pStr->data());
    4.     }
     
  18. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    привет, пытаюсь делать шаблон структуры из четырех элементов на подобии std::pair
    но один метод странный
    Код (Text):
    1. template<class _Ty1,
    2.     class _Ty2> inline
    3.     bool operator<(const pair<_Ty1, _Ty2>& _Left,
    4.         const pair<_Ty1, _Ty2>& _Right)
    5.     {   // test if _Left < _Right for pairs
    6.     return (_Left.first < _Right.first ||
    7.         !(_Right.first < _Left.first) && _Left.second < _Right.second);
    8.     }
    Зачем
    Код (Text):
    1.  || !(_Right.first < _Left.first)
    ?
    Можно ли замнить на
    Код (Text):
    1. return (_Left.first < _Right.first && _Left.second < _Right.second);
    ?
    т.е. правильно ли будет:
    Код (Text):
    1.  return (_Left.first < _Right.first && _Left.second < _Right.second &&
    2. _Left.third < _Right.third && _Left.fourth < _Right.fourth);
    ?
     
  19. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    verelex

    Нет. Присмотрись внимательнее - там лексикографическое сравнение по значениям first и second.
     
  20. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Это чтобы не использовать оператор "<=" – его может и не быть же.

    Код (Text):
    1. return (_Left.first < _Right.first || !(_Right.first < _Left.first) && _Left.second < _Right.second);
    2.                     ^
    3. ==
    4.  
    5. return (_Left.first <= _Right.first  &&  _Left.second < _Right.second);
    6.                     ^^