The * or -> operator must be applied to a pointer
"К указателю должен быть применен оператор * или ->",
Оператор * или-> должен быть применен к указателю
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;
}
}
typedef bool SymbolBoolMap[16][15];
static SymbolBoolMap symbol_Bool_Map_English_Upper_A = { ... };
[const] SymbolBoolMap&
.как можно создать свой 3D редактор для создание персонажей? что наподобие Abode Fuse CC, но адаптировать под свои цели.
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.
std::auto_ptr
является устаревшим и удален из стандартной библиотеки начиная со стандарта C++17.std::unique_ptr
.std::auto_ptr
мог следить только за памятью одного экземпляра. Передать туда память массива можно, но деструктор будет вызван только у первого экземпляра массива. В общем смысле это означает утечку памяти.std::unique_ptr
, наоборот, способен контролировать память как единичного экземпляра, так и массива экземпляров. Еще в отличии от своего устаревшего товарища, std::unique_ptr
способен спокойно передавать свое состояние, не создавая возможность двойного освобождения памяти. В дополнение, std::unique_ptr
еще способен пользоваться нестандартными деструкторами, что очень кстати при работе, например, с COM-объектами или нестандартной схемой аллокации памяти.main
.Например, int занимает 4 байта
В случае с double можно задать абсолютно любое число
double x = 1e500;
для чего в конце приписывают 'f' ,когда пользуются типом данных float?
float x; return x + 12.34f
вёлся в менее точном типе float, а не double.float x = 12.34;
это совершенно не нужно, компилятор и сам поймёт, что преобразование double → float можно сделать при компиляции.Сколько бит(байт) занимают типы данных с плавающей запятой в C++?
HDC hdcMem = CreateCompatibleDC(hdc); // создаете совместимый контекст
HBITMAP hbmOld = SelectObject(hdcMem, hBitmap); // устанавливаете там свой bitmap
GetPixel(hdc, x, y); // получаете свой пиксель
SelectObject(hdcMem, hbmOld); // возвращаете назад битмап контекста
DeleteDC(hdcMem); // удаляете контекст, что уже не нужен
);
Вопрос довольно короток. Есть ли смысл изучать сначала С, а потом С++?
Чем лучше программист знает С, тем труднее будет для него при программировании на С++ отойти от
стиля программирования на С.
Для изучения С++ не обязательно знать С. Программирование на С способствует усвоению приемов и
даже трюков, которые при программировании на С++ становятся просто ненужными.
Тем не менее, хорошие программы на языке С по сути являются
программами на С++. Например, все программы из классического описания С (K&R) являются
программами на С++. В процессе изучения С++ будет полезен опыт работы с любым языком со
статическими типами.
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
помогает легче находить дельту между кадрами и контролировать ошибку дельты.glutIdleFunc
. В документации написано что GLUT будет постоянно вызывать переданную функцию в свободное от обработки системных сообщений время. А если в glutIdleFunc
передан nullptr
(или idle-функция не была задана), то GLUT будет строго ждать следующего системного сообщения.glutPostRedisplay
, в glutIdleFunc
приведет и к регулярной перерисовке экрана.10 лет это 3 класс