Ответы пользователя по тегу C++
  • Какую литературу почитать про C++ 11/14?

    @EkvVN
    Ответ написан
    Комментировать
  • Как интегрировать класс на чистом C++ в форму на C++/CLI?

    @EkvVN
    Тоже когда-то сталкивался с необходимостью использовать статическую либу в managed c++
    осталась заметка, возможно поможет:

    Я разобрался с этой ошибкой и нашел решение, которое вроде работает

    У меня в коде в отдельной статически линкуемой библиотеке (*.lib) есть статические поля класса
    И при запуске программы они инициализируются, как и все остальные статические и глобальные переменные
    И вот при их инициализации в рантайме прога падает на ассерте в одном из стандартных файлов
    /*
    * If this ASSERT fails, a baf pointer has been passed in. It may be
    * totally bogus, or it may have been allocated from another heap.
    * The pointer MUST come from the 'local' heap.
    */
    _ASSERTE(_CrtIsValidHeapPointer(pUserData))

    В интернете нашкл, что для исполняего CLR проекта нужно изменить в свойствах Линкера точку входа
    Linker->Advanced
    Entry Point: main

    1) для x32, заменить на:
    ?mainCRTStartupStrArray@@$$FYMHP$01AP$AAVString@System@@@Z

    2) для x64, заменить на:
    ?mainCRTStartupStrArray@@$$FYMHP$01EAPE$AAVString@System@@@Z

    Т.к. она имеет не стандартный вид:
    int main(int argc, int** argv)

    А такой:
    int main(array ^args)

    ----
    https://stackoverflow.com/questions/15188757/how-d...

    А по вопросу:
    создать через new и хранить указатель на класс, как в стандартном С++

    C++:
    class myClass
    {
    };


    С++/CLI:
    public ref class Form : System::Windpows::Forms
    {
    public:
        Form()
        {
            example = new myClass();
        }
        ~Form()
        {
            delete example;
        }
    private:
        myClass * example;
    };
    Ответ написан
    Комментировать
  • Как в C++ удалить инструкцию после одной итерации цикла?

    @EkvVN
    bool condition = true; // <----------
    for (; ;) {
    if (condition) {
    //do_something
    condition = false; // <----------
    }

    // remaining body
    }
    Ответ написан
    Комментировать