2017-01-24 8 views
1

WTLはテンプレートライブラリなので、テンプレートライブラリのヘッダファイルに実装する必要があります。WTLヘッダーファイルを実装する方法は?

私のロジックを.cppに実装したいのであれば、私は巨大なヘッダファイルをコーディングする必要があります。例えば

、MainFrm.h

// ... 
// MainFrm.h 
class CMainFrame : 
    public CFrameWindowImpl<CMainFrame>, 
    public CUpdateUI<CMainFrame>, 
    public CMessageFilter, public CIdleHandler 
{ 
    //... 
    void function1() 
    { 
    //... 
    } 

    void function2() 
    { 
    //... 
    } 
} 

に私はそれを行う方法を、myfunction.cppfunction1()function2()をしたいですか?

ご案内しています。

編集:

解決済み!ヤンS.のおかげで、私は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() 
{ 
    //... 
} 
+1

C++の定義と宣言の違いhttp://stackoverflow.com/questions/1410563/what-is-the-difference-between-definition-and-declaration –

+1

あなたはテンプレートを前に考えているかもしれませんそれは明示的にインスタンス化されていますhttp://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file –

答えて

1

を置きますあなたの.cppファイルで宣言

// MainFrm.h 
class CMainFrame : 
    public CFrameWindowImpl<CMainFrame>, 
    public CUpdateUI<CMainFrame>, 
    public CMessageFilter, public CIdleHandler 
{ 
    //... 
    void functionx(); 
    //... 
}; 

は、定義を置く

#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 

これにより重複宣言が停止します。

+0

コンパイラの出力エラー –

+0

は私の編集した質問を参照してください。 – sailfish009

+0

私の編集した回答を見る –

関連する問題