2012-04-03 5 views
7

У меня есть функция с void * как один из ее параметров (пустота используется как общий объект). Но чтобы иметь возможность вызывать функцию в этом универсальном объекте, мне нужно сначала набросить его, и для этого мне нужно знать, какой тип класса. И я хотел знать, возможно ли передать класс или некоторую информацию, которая позволяет мне отображать объект как параметр функции?Можно ли передать класс в качестве параметра функции в C++?

+0

Вы владелец функции получать недействительным * в качестве параметра или она является частью внешнего API? –

+0

Я являюсь владельцем func – XaitormanX

+6

Обычно очень плохая идея обеспечивает функцию с void * в качестве входа. Существует лучший способ добиться общего поведения: использование шаблона или наследования. Вы должны переосмыслить свой дизайн. –

ответ

9

Если вы изучали Templates?

Примером может быть что-то такое, как

class SomeClass 
{ 
public: 
    template<typename CastClass> 
    void DoSomething(void* someArg) 
    { 
     (CastClass)someArg; 
    } 
}; 

Использование:

class A{ }; // Some random test class 

SomeClass test; 
A a; 
test.DoSomething<int>(&a); // The template parameter can be anything. 
          // I just have int to make it a smaller example. 
+0

Но мне нужна эта функция внутри класса, и я не могу сделать этот класс шаблоном – XaitormanX

+0

@XaitormanX: См. Обновленный пример – josephthomas

+0

Спасибо. И как он будет использоваться? – XaitormanX

Смежные вопросы