C ++中结构的前向声明

时间:2014-02-24 03:56:55

标签: c++ visual-c++ struct forward-declaration

以下是我的头文件

#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;*

我该如何实现?什么是合适的,前向声明或指针实现?

1 个答案:

答案 0 :(得分:1)

在单个翻译单元中,您需要提供类型的定义。它看起来像:

struct AsynchronousFunction::Impl {
   // members and functions...
};

请注意,我将pImpl重命名为Impl,习语中的p用于指针,包含类中的成员将为Impl* pImpl;