掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.7667

MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---古い初心者(2007/07/09 18:12:59)


皆さん
いつもお世話になっております。
またご指導頂ければ幸いです。

OS: Windows XP
IDE:MS visual studio
テンプレット関数を使おうとしたら変な現象が起きています。
これは仕様であるはずないと思ってみんさんの英知を借りたいです。

下記ようような関数テンプレットの定義があるとします。
template<typename T> short tempQ (short x, short y, short width, short height, double lowthre)
{
......
}


いくつか上記のテンプレット関数をコールする関数を定義しておきます:

short doChar(short x, short y, short width, short height, double lowthre)
{
return tempQ <unsigned char>(x, y, width, height,lowthre);
}


short doShort(short x, short y, short width, short height, double lowthre)
{
return tempQ <short>(x, y, width, height,lowthre);
}


short doInt(short x, short y, short width, short height, double lowthre)
{
return tempQ <int>(x, y, width, height,lowthre);
}


short doFloat(short x, short y, short width, short height, double lowthre)
{
return tempQ <float>(x, y, width, height,lowthre);
}

すると、
doChar(..)、doShort(..)、doInt(..)のどれを実行しても
必ずソース上では最後に表しているtemplet関数が実行されます。
例えば、doChar(..)を実行しようとしても、
tempQ <unsigned char>(x, y, width, height,lowthre)の本体に入れず、
tempQ <float>(x, y, width, height,lowthre)の本体に入る。

順番変えて、例えば、最後に定義した関数doFloat(..)の中の
「return tempQ <float>(x, y, width, height,lowthre);」を
「tempQ <int>(x, y, width, height,lowthre);」に置き換えたら、
今度はdoChar(..)、doShort(..)、doFloat(..)のいずれを実行しても
いつもtempQ <int>(x, y, width, height,lowthre)が実行されます。

結構可笑しいですよね

どうぞ宜しくお願い致します



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:MS VC++6.0のバッグ? (テンプレット関数について) 7668 επιστημη 2007/07/09 19:46:29
<子記事> Re:MS VC++6.0のバッグ? (テンプレット関数について) 7669 επιστημη 2007/07/10 02:10:04


No.7668

Re:MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---επιστημη(2007/07/09 19:46:29)
http://blogs.wankuma.com/episteme


>いつもtempQ <int>(x, y, width, height,lowthre)が実行されます。

VC6のバグ。


この投稿にコメントする

削除パスワード

No.7671

Re:MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---Ban(2007/07/15 05:35:39)


>VC6のバグ。

御意。結構有名です(VC6はもうサポート切れですが、VC7.1等ではちゃんと直ってます)。
引数にtemplateの仮引数(ここではT)が含まれないと、まともに動きません。

VC6での無理やりな回避方法の一例
template<typename T> short tempQ (short x, short y, short width, short height, double lowthre, T* dummy=0)



この投稿にコメントする

削除パスワード

No.7672

Re:MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---RAPT(2007/07/15 12:28:30)
http://rapt21.com


>VC6での無理やりな回避方法の一例
>template<typename T> short tempQ (short x, short y, short width, short height, double lowthre, T* dummy=0)

なるほど、そんな回避策があったんですね。φ(..)メモメモ


この投稿にコメントする

削除パスワード

No.7673

Re:MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---επιστημη(2007/07/15 15:57:41)
http://blogs.wankuma.com/episteme


>VC6での無理やりな回避方法の一例
>template<typename T> short tempQ (short x, short y, short width, short height, double lowthre, T* dummy=0)

なるほどー つかなんて無理やり ^^;




この投稿にコメントする

削除パスワード

No.7688

VC6での無理やりな回避方法(お礼)
投稿者---古い初心者(2007/07/19 14:51:17)


Ban様
まったくお手上げ状態から助かりました!
本当に有難うございました。
また宜しくお願い致します。

Ban様writen:
>VC6での無理やりな回避方法の一例
>template<typename T> short tempQ (short x, short y, short width, short height, double lowthre, T* dummy=0)




この投稿にコメントする

削除パスワード

No.7669

Re:MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---επιστημη(2007/07/10 02:10:04)
http://blogs.wankuma.com/episteme


バッグ? BAG?
テンプレット? templette?



この投稿にコメントする

削除パスワード

No.7670

Re:MS VC++6.0のバッグ? (テンプレット関数について)
投稿者---古い初心者(2007/07/10 12:05:26)


いい加減に書いちゃってごめんなさい!
バッグ ---> バグ
テンプレット ---->テンプレート

大変ご迷惑をおかけ致しました!
また宜しくお願い致します


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ