следующий мой заголовочный файл
#ifndef _ASYNCHRONOUSCLASS_H
#define _ASYNCHRONOUSCLASS_H
#include "stdafx.h"
#include <windows.h>
typedef int (*functionCall)(void *);
typedef void * voidPtr;
class AsynchronousFunction{
//int returnVal;
//functionCall fCall;
//voidPtr param;
//HANDLE m_hEvent;
struct pImpl;
pImpl* m_pImpl;
public:
AsynchronousFunction(functionCall fCall, voidPtr param);
~AsynchronousFunction();
void functionExecuter();
int result();
protected:
private:
};
#endif
В файле cpp я хочу реализовать структуру, содержащую следующие данные.
*//int returnVal;*
*//functionCall fCall;*
*//voidPtr param;*
*//HANDLE m_hEvent;*
Как я могу это реализовать? Что было бы подходящим, форвардная декларация или реализация указателя?
В одной единице перевода вам нужно будет указать определение типа. Это будет выглядеть так:
struct AsynchronousFunction::Impl {
// members and functions...
};
Обратите внимание, что я переименовал pImpl
в Impl
, то p
в идиомы для указателя, член в классе, содержащем бы Impl* pImpl;
,
AsynchronousFunction
. Конструктор AsynchronousFunction
должен будет выделить объект и предоставить значения, необходимые внутри типа, как и для любого другого объекта-члена.
pointer implementation
понятной?