jason_cyl329
高階會員
發表:123 回覆:155 積分:105 註冊:2003-05-26
發送簡訊給我
|
請問,
我在Form1.cpp內使用template函式宣告,不是成員函式,可以使用,
可是,把這個template函式放再另一個A.cpp,他的A.h也有宣告,
但是就是不能從Form1去call他,請問template是否只能在自己的程式段內使用
|
bass15
高階會員
發表:24 回覆:171 積分:119 註冊:2003-10-27
發送簡訊給我
|
可以把你宣告的部份POST上來嗎?
Form1.cpp中要把
#include "A.h"
加進去試試看..
|
richtop
資深會員
發表:122 回覆:646 積分:468 註冊:2003-06-10
發送簡訊給我
|
jason_cyl329 您好: 因屬外部檔案,除了include相關.h檔之外,還要將該.c/.cpp加入Project中。
另include時記得用雙引號"my.h"。
|
jason_cyl329
高階會員
發表:123 回覆:155 積分:105 註冊:2003-05-26
發送簡訊給我
|
以上所緒的均有做 程式很簡單,如下:
Unit.cpp
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm1::FormClick(TObject *Sender)
{
int i = templateproc(5);
Canvas->TextOutA(1,i,IntToStr(i));
}
//---------------------------------------------------------------------------
Unit2.cpp
//--------------------------------------------------------------------------- #pragma hdrstop #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init)
template T templateproc(T Reg)
{
return T; }
///////////////////
Unit2.h
//--------------------------------------------------------------------------- #ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#endif
template T templateproc(T);
|
richtop
資深會員
發表:122 回覆:646 積分:468 註冊:2003-06-10
發送簡訊給我
|
jason_cyl329 您好: 依照您所提測試一下,確是如此。 所以自圓其說,妄加臆測如下:
一般外部函式,是在連結階段才將之含括進來,所以編譯時儘管沒"看到"該函式,仍能依.>< >< >
|
jason_cyl329
高階會員
發表:123 回覆:155 積分:105 註冊:2003-05-26
發送簡訊給我
|
請問richtop前輩,
那要如何來做template的include file呢?
如何定義一些template在一固定的*.cpp
這樣其他程式要用到就可以用加入project的方式來做.
如我現在設計一個新的project,有需要用到相關的template
就可以#include ....並將template的cpp加入。
|
richtop
資深會員
發表:122 回覆:646 積分:468 註冊:2003-06-10
發送簡訊給我
|
jason_cyl329 您好: 您說的沒錯!
將完整的定義存入"xxx.h"或"xxx.cpp",再以include方式引用即可以呼叫到。
<>< class="code">// Save as xxx.h or xxx.cpp
template
T templateproc(T Reg)
{
return (T) Reg;
} RichTop 敬上 =====*****
把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題!
=====#####
|
jason_cyl329
高階會員
發表:123 回覆:155 積分:105 註冊:2003-05-26
發送簡訊給我
|
richtop兄,謝謝你的指教,跟你交流使我受益良多!!
|