Как я могу указать указатель класса на общий указатель, например void *? Как этот код действителен ?,Указатель класса каста на указатель пустоты
class CFoo
{
int a;
public:
CFoo():a(1){}
~CFoo(){}
getNum(){return a;}
};
void tfunc(void* data)
{
CFoo* foo = static_cast<CFoo*>(data);
std::cout << "Number: " << foo->getNum();
delete foo;
}
int main()
{
CFoo* foo = new CFoo;
void* dt = static_cast<void*>(foo);
tfunc(dt); // or tfunc(static_cast<void*>(food));
return 0;
}
Последний раз, когда я читал «могу», я обещал сделать что-то ужасное, когда я встречу его в следующий раз. Жаль, что я не помню, что это было. Кроме того, вам даже не нужен бросок - можно назначить любой нефункциональный указатель на 'void *'. –
Выглядит в порядке. [Прочитайте это] (http://stackoverflow.com/a/12275452/2089675) – smac89
, если он скомпилирован, он действителен и IMO он должен скомпилировать. Но мне не нравится эта смесь C и C++ ... – alexbuisson