WTL是模板库,所以我必须在模板库头文件中实现它。
我希望在.cpp文件中实现我的逻辑,否则,我将不得不编写一个巨大的头文件。
例如,在MainFrm.h
// ...
// MainFrm.h
class CMainFrame :
public CFrameWindowImpl<CMainFrame>,
public CUpdateUI<CMainFrame>,
public CMessageFilter, public CIdleHandler
{
//...
void function1()
{
//...
}
void function2()
{
//...
}
}我想让function1()和function2()在myfunction.cpp,怎么做呢?
请指点。
编辑:
解决了!感谢Jan .,我在WTL项目中加入了myfunction.cpp,并添加了一些行:
MainFrm.h:
// ...
// MainFrm.h
#if 1
#include <atlframe.h>
#include <atlsplit.h>
#include <atlctrls.h>
#include <atlctrlw.h>
#include <atlctrlx.h>
#include "sampleView.h"
#include "resource.h"
#endif
// MainFrm.h
class CMainFrame :
public CFrameWindowImpl<CMainFrame>,
public CUpdateUI<CMainFrame>,
public CMessageFilter, public CIdleHandler
{
//...
void functionx();
//...
};myfunction.cpp:
// myfunction.cpp
#include "stdafx.h"
#include "MainFrm.h"
void CMainFrame::functionx()
{
//...
}发布于 2017-01-25 00:34:23
在您的标题中放置声明
// MainFrm.h
class CMainFrame :
public CFrameWindowImpl<CMainFrame>,
public CUpdateUI<CMainFrame>,
public CMessageFilter, public CIdleHandler
{
//...
void functionx();
//...
};在您的.cpp文件中放置定义
#include MainFrm.h
void CMainFrame::functionx()
{
// more code
} 编译器错误
您似乎缺少WTL报头,包括
#include <atlframe.h>
#include <atlsplit.h>但是,在你的标题中要确保你
#pragma once或
#ifndef UNIQUE_HEADER_NAME
#define UNIQUE_HEADER_NAME
//header code
#endif这将停止重复声明。
https://stackoverflow.com/questions/41818608
复制相似问题