Про void*
Проще некуда.
представим "твой" код
class qwe
{
...
}
qwe *CreateSomething(int param) - создание объекта
DoSomething(qwe *this, int param) - "метод"
а теперь представим что этот код не твой, а чужой, зашитый в какой-нибудь библиотеке, итого
void *CreateSomething(int param) - создание объекта
DoSomething(void *this, int param) - "метод"
т.к. создатели библиотеки не хотят чтобы ты трогал их класс, или ещё чего, однако чтобы ты мог передавать инфу о нём, в данном случае - указатель.
void * - означает указатель на что-то (тупо адрес в памяти)
void - бывает только тип возврата функции.
void ** - означает указатель на указатель на что-то. и т. д.
Известно, что какой бы не был тип на что указатель - его размер одинаков = адресу. для 32-х битных программ 32 бита, для 64-битных, сам догадаешься.
однако раз void * - адрес = число, то можно в void * хранить и число.
Вообще void * удобен там, где заранее не известен тип.
например есть стандартная функция сортировки.
#include <cstdlib>
int cmp (const void *a, const void *b)
{
return *(const int *)a - *(const int*)b;
}
int main()
{
int a[]={10,2,5,1,20};
qsort(a, sizeof(a)/sizeof(a[0]), sizeof(a[0]), cmp);
return 0;
}
Ты имеешь в виду что принцип работы функций со структурами аналогичен работе методов с классами?
Всё зависит от того, что ты подразумеваешь когда чего-то пишешь. Если ты считаешь это "методом", то наверно это метод ).
Как делегирование поддерживается в простом C?
а делегирование поддерживается в C++?
если да, то что ты понимаешь под делегированием,
и что значит "поддерживается", т.к. в C++ я знаю только наследование, и разделяю наследование с делегированием.
Ну а код то куда писать? В win main функцию или в win proc?
Как и везде в C++, пиши куда хочешь, хоть в отдельный .cpp, хоть ещё как-нибудь, хоть шаблоном, хоть чем, хоть дефайнами.
#include <windows.h>
.......................
void MySuperProgram(............)
{
...........
}
..........
int CALLBACK WinMain(.................)
{
MySuperProgram(.............)
return 0;
}
...............
int CALLBACK WinProc(.................)
{
.........
MySuperProgram(............)
..........
}
О_о я написал и Там и Там?!!!
что первое что второе - Callback. Как и функция сравнения сортировки в предыдущем примере.