include "*.h" 和 declare class *; 的区别?

刚才遇到个很奇怪的问题,到现在还没想明白,来这里记录一下。

在A.h中定义了一个类ClassA,然后在B.h中有使用这个类。使用方式为:

#include "A.h"
Class B {
  void foo(ClassA* A);
};
然后编译的时候居然告诉我不认识ClassA这货。搞的我上下折腾了好久。


后来居然在B.h中添加了ClassA的声明: 

ClassA;

就好了。


到现在还是百思不解。

按理说应该是 #include 的功能比 Declaration 的功能强才对啊。

谁路过这里,顺便帮我解释一下~

Tks~


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QUENCY_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; CFFT m_fft; CTChart1 m_chartTime; CTChart1 m_chartFreq; CComboBox m_comboWindow; CComboBox m_comboFunction; int m_iSampleRate; int m_iFFTLength; int m_iOverlap; double m_dWindowParam; double m_dAmplitude; double m_dTimeStep; double m_dFreqStep; BOOL m_bLogScale; BOOL m_bShowGrid; BOOL m_bShowLegend; BOOL m_bKeepData; BOOL m_bIsProcessing; CEdit m_editSampleRate; CEdit m_editFFTLength; CEdit m_editOverlap; CEdit m_editWindowParam; CEdit m_editAmplitude; CEdit m_editTimeStep; CEdit m_editFreqStep; CButton m_checkLogScale; CButton m_checkShowGrid; CButton m_checkShowLegend; CButton m_checkKeepData; CButton m_buttonStart; CButton m_buttonStop; CString m_strWindowTitle; CString m_strXLabelTime; CString m_strXLabelFreq; CString m_strYLabelTime; CString m_strYLabelFreq; // 生成的消息映射函数 protected: virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedButtonStart(); afx_msg void OnBnClickedButtonStop(); afx_msg void OnCbnSelchangeComboWindow(); afx_msg void OnCbnSelchangeComboFunction(); afx_msg void OnEnChangeEditSamplerate(); afx_msg void OnEnChangeEditFftlength(); afx_msg void OnEnChangeEditOverlap(); afx_msg void OnEnChangeEditWindowparam(); afx_msg void OnEnChangeEditAmplitude(); afx_msg void OnEnChangeEditTimestep(); afx_msg void OnEnChangeEditFreqstep(); afx_msg void OnBnClickedCheckLogscale(); afx_msg void OnBnClickedCheckShowgrid(); afx_msg void OnBnClickedCheckShowlegend(); afx_msg void OnBnClickedCheckKeepdata(); void InitControls(); void UpdateControls(); void EnableControls(BOOL bEnable); void StartProcessing(); void StopProcessing(); BOOL ProcessData(double* pData, int iDataLength); static UINT DoProcessing(LPVOID pParam); }; 请问,这段代码是用来做什么的?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值