Задать вопрос
  • Почему я не могу использовать this в C#?

    myjcom
    @myjcom
    The * or -> operator must be applied to a pointer

    Не так
    "К указателю должен быть применен оператор * или ->",

    А так
    Оператор * или-> должен быть применен к указателю

    Используй точку
    https://docs.microsoft.com/ru-ru/dotnet/csharp/lan...
    Ответ написан
    Комментировать
  • Почему я не могу использовать this в C#?

    Почитайте книгу по C#. А то это полнейшая глупость...

    В C# оператор "->" пременним только к указателям. this это не указатель, а ссылка. Поэтому нужно использовать оператор "."

    using System;
    
    class TestClass
    {
        private int value;
        public int SetValue() { return this.value; }
        public void SetValue(int value) { this.value = value; }
    }
    
    class MainClass
    {
        TestClass test;
        static int Main(string[] argv)
        {
    
            return 0;
        }
    }
    Ответ написан
    Комментировать
  • Что делать с хакером?

    Nolis
    @Nolis
    it-гопник
    В "спаме" письмо от "хакера".
    Тут уже всё сделали за тебя)
    Ответ написан
    3 комментария
  • Что делать с хакером?

    longclaps
    @longclaps
    Да отдай ты ему те битки - всё ж равно это фантики.
    Ответ написан
    Комментировать
  • Как вернуть указатель на двухмерный массив?

    @Mercury13
    Программист на «си с крестами» и не только
    typedef bool SymbolBoolMap[16][15];
    static SymbolBoolMap symbol_Bool_Map_English_Upper_A = { ... };

    и возвращай [const] SymbolBoolMap&.

    Вообще есть два разных метода организации многомерных массивов: кусок памяти M×N и одномерный массив[M] указателей на массивы[N].
    Если для одномерных массивов кусок памяти длины N впрямую конвертируется в указатель (и даже при определённых условиях всё работает), то в многомерных первое и второе НЕСОВМЕСТИМЫ.
    Ответ написан
    2 комментария
  • Как из хеадера вызывать функции которые объявлены в main.cpp?

    @Griglapidus
    C++/Qt
    Как вариант можно в .h файл внести объявление функции. Например
    int foo(int a);
    Объявление нужно вставить до функции где она будет использована.
    Определение функции можно оставить в main.cpp
    Ответ написан
    Комментировать
  • Как написать компилятор С для "самодельного" процессора?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    5d66774c767f2234030678.png
    Ответ написан
    Комментировать
  • Как создать 3D редактор для создания персожей?

    Zoominger
    @Zoominger
    System Integrator
    как можно создать свой 3D редактор для создание персонажей? что наподобие Abode Fuse CC, но адаптировать под свои цели.

    Ну, если пойти путём Адоба, то понадобится пара миллионов долларов.

    Вариант с самостоятельным написанием... Понимаете, либо на землю спустятся инопланетяне и будут пить с вами чай, либо вы напишете это в одиночку. Так вот, я бы ставил чайник.
    Ответ написан
    8 комментариев
  • Почему так легко украсть чужие куки firefox?

    Lynn
    @Lynn
    nginx, js, css
    Эм? А чего ты ожидал?

    И вообще, физический доступ к компу это ни разу не «легко» с точки зрения информационной безопасности.

    UPD: Официальная позиция Chrome. Вполне применима к любым другим браузерам и вообще приложениям.
    https://dev.chromium.org/Home/chromium-security/se...

    Why aren't physically-local attacks in Chrome's threat model?
    [...]

    We consider these attacks outside Chrome's threat model, because there is no way for Chrome (or any application) to defend against a malicious user who has managed to log into your computer as you, or who can run software with the privileges of your operating system user account.
    Ответ написан
    4 комментария
  • Когда удаляются умные указатели?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    std::auto_ptrявляется устаревшим и удален из стандартной библиотеки начиная со стандарта C++17.
    Вместо него стоит пользоваться std::unique_ptr.

    std::auto_ptr мог следить только за памятью одного экземпляра. Передать туда память массива можно, но деструктор будет вызван только у первого экземпляра массива. В общем смысле это означает утечку памяти.
    std::unique_ptr, наоборот, способен контролировать память как единичного экземпляра, так и массива экземпляров. Еще в отличии от своего устаревшего товарища, std::unique_ptr способен спокойно передавать свое состояние, не создавая возможность двойного освобождения памяти. В дополнение, std::unique_ptr еще способен пользоваться нестандартными деструкторами, что очень кстати при работе, например, с COM-объектами или нестандартной схемой аллокации памяти.

    Любой умный указатель является обычным объектом своего типа. Все объекты всех типов имеют свое время жизни, согласно условиям своего конструирования.
    Умные указатели разрушаются тогда, когда завершается их время жизни. Для умных указателей в глобальном пространстве время жизни завершается сразу после выхода из main.

    В языке нет термина "обычный массив", этот вопрос непонятен.
    Ответ написан
    Комментировать
  • Правда ли то, что большинство Python библиотек пишут на C/C++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не, не правда. 99% библиотек для Python написано на Python. На Сях пишутся только критичные к скорости выполнения и расходу памяти. А ещё бывает, что для исходно Сишной библиотеки, ставшей популярной, пишут обвязку на Python, так как это относительно просто позволяет заимствовать профит.
    Ответ написан
    Комментировать
  • Как сделать эксплоит публичным?

    Jump
    @Jump
    Системный администратор со стажем.
    Как сделать эксплоит публичным?
    Выложите на гитхаб как вариант.
    Эксплойт - программа или действия эксплуатирующие уязвимость.
    Сделать публичным - опубликовать, распространить, сделать доступным широким массам.
    272-274УК РФ
    Ответ написан
    4 комментария
  • Как максимально сильно сжать игру для тату?

    @BorisKorobkov
    Web developer
    идеально хотелось бы DOOM

    IDDQD - и старперам сразу все понятно
    Ответ написан
    Комментировать
  • Сколько бит(байт) занимают типы данных с плавающей запятой в C++?

    @Mercury13
    Программист на «си с крестами» и не только
    Например, int занимает 4 байта

    По современному консенсусу, да. Но иногда может занимать 2 байта (меньше — вроде нет).

    В случае с double можно задать абсолютно любое число

    double x = 1e500;
    Ответ статического анализатора Clang: magnitude of floating-point constant is too large for type 'double'; maximum is 1.79…E+308

    На число 1.23456789012345678901234 не жалуется, но учите матчасть — относительная точность double 52 двоичных цифры (исключая головную единицу), или около 16 десятичных.

    для чего в конце приписывают 'f' ,когда пользуются типом данных float?

    Чтобы расчёт float x; return x + 12.34f вёлся в менее точном типе float, а не double.
    А вот коду float x = 12.34; это совершенно не нужно, компилятор и сам поймёт, что преобразование double → float можно сделать при компиляции.

    Сколько бит(байт) занимают типы данных с плавающей запятой в C++?

    Зависит от машины, но по выработанному консенсусу — float 4, double 8.
    Нестандартная (присущая x86) реализация long double имеет 10 значащих байтов, но 12 или 16 вместе с выравниванием.
    Ответ написан
    Комментировать
  • Как получить значение пиксела используя WinAPI?

    petermzg
    @petermzg
    Самый лучший программист
    HDC hdcMem = CreateCompatibleDC(hdc); // создаете совместимый контекст
    HBITMAP hbmOld = SelectObject(hdcMem, hBitmap); // устанавливаете там свой bitmap
    GetPixel(hdc, x, y); // получаете свой пиксель
    SelectObject(hdcMem, hbmOld); // возвращаете назад битмап контекста
    DeleteDC(hdcMem); // удаляете контекст, что уже не нужен
    );
    Ответ написан
    Комментировать
  • Сначала С, а потом С++?

    myjcom
    @myjcom Куратор тега C++
    Вопрос довольно короток. Есть ли смысл изучать сначала С, а потом С++?

    Ответ тоже довольно короток.
    Чем лучше программист знает С, тем труднее будет для него при программировании на С++ отойти от
    стиля программирования на С.

    Для изучения С++ не обязательно знать С. Программирование на С способствует усвоению приемов и
    даже трюков, которые при программировании на С++ становятся просто ненужными.

    Бьерн Страуструп. Язык программирования С++.

    Нотабене

    Тем не менее, хорошие программы на языке С по сути являются
    программами на С++. Например, все программы из классического описания С (K&R) являются
    программами на С++. В процессе изучения С++ будет полезен опыт работы с любым языком со
    статическими типами.

    Ответ написан
    1 комментарий
  • Wchar_t в параметрах функции main?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему не отобразился текст параметра? Тип же верен.

    Потому что недостаточно просто поменять тип параметра функции. Нужно ещё поменять то как она вызывается.
    В венде для этого есть другое имя для main -- wmain.
    Ответ написан
    5 комментариев
  • Как ограничить FPS в OpenGL и glut?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Само ограничение частоты кадров делается очень просто. Снаружи idle-функции нужно содержать переменную с временем последнего вызова idle-функции, а в самой функции нужно просто накопить дельту частоты кадров и вызвать glutPostRedisplay.
    double GetCurrentTime()
    {
    	using Duration = std::chrono::duration<double>;
    	return std::chrono::duration_cast<Duration>( 
    		std::chrono::high_resolution_clock::now().time_since_epoch() 
    	).count();
    }
    
    const double frame_delay = 1.0 / 60.0; // 60 FPS
    double last_render = 0;
    void OnIdle()
    {
    	const double current_time = GetCurrentTime();
    	if( ( current_time - last_render ) > frame_delay )
    	{
    		last_render = current_time;
    		glutPostRedisplay();
    	}
    }


    Данный код является сильно упрощенным механизмом, лишь показывающим общий принцип ограничения частоты кадров. Его можно применять там, где не требуется точный контроль дельты между кадрами. К слову, представление времени в типе double помогает легче находить дельту между кадрами и контролировать ошибку дельты.
    Для более точного контроля частоты кадров стоит обратиться, например, к такому материалу.
    Ответ написан
    1 комментарий
  • OpenGL не сразу отображает данные из кадрового буфера?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Я не вижу в твоем коде вызова glutIdleFunc. В документации написано что GLUT будет постоянно вызывать переданную функцию в свободное от обработки системных сообщений время. А если в glutIdleFunc передан nullptr (или idle-функция не была задана), то GLUT будет строго ждать следующего системного сообщения.

    Если я все правильно помню, то передача настоящей функции, в которой будет вызываться функция glutPostRedisplay, в glutIdleFunc приведет и к регулярной перерисовке экрана.
    Как правило, в качестве idle-функции в GLUT передают update-функцию, в которой обновляется состояние объектов перед рендерингом.
    Ответ написан
    5 комментариев
  • Какому языку, в какой среде начинать учить ребенка программированию 10 лет?

    10 лет это 3 класс

    Отстаньте лучше от ребёнка. Ему всего лишь 10 лет - какое программирование? Пусть он сначала насладится детством. А уже после - сам начнёт ковыряться в том, что ему понравится
    Ответ написан
    7 комментариев