Предположим, у меня есть функция drawImage
, которая принимает много аргументов, некоторые из них имеют типы WinApi, такие как HWND
, HDC
и так далее; и я не хочу импортировать все из них в заголовок класса. Но мне нужно вызвать это из методов моего класса.Как объявить и вызвать функцию с неизвестными аргументами?
extern void drawImage();
class A {
private :
int n;
// ...
public :
// ...
void draw() {
drawImage(n);
}
};
Приведенный выше код дает мне ожидаемую ошибку: drawImage does not take one argument
. Итак, как я мог достичь этого?
Кроме того, я не хочу определять свою функцию-член в исходном файле, который содержит материал WinApi.
UPDATE:
extern void drawImage();
extern int a;
extern unsigned long int b;
...
extern "C" void c;
class A{
private :
int n;
...
public :
...
void draw(a,b,c){
drawImage(a,b,c,n);
}
}
Это может сделать большое решение, но Visual Studio не позволяет extern void
декларации.
Вы хотите вызвать функцию, которая не принимает один аргумент с одним аргументом; почему вы ожидаете, что это сработает? * Как бы ожидать, что это сработает? –
thats мой вопрос, какая-то волшебная C++ вещь, позволяющая такую гибкость в коде, как символические args: 'draw (a, b, c, d)' –
Как правило, и в этом случае ожидание «магии» оставит вас разочарованный. –