お世話になっています。ccです。
はじめて、CTypedPtrArray()使っています。
宣言のところにエラーが出ました。
例
MyApp1.h
CTypedPtrArray<CPtrArray, WCHAR*> m_Wchar;
ちなみに、
stdafx.h
#include <afxtempl.h> //追加
エラー:
e:\MyApp1.h(13): error C2143: 構文エラー : ';' が '<' の前にありません。
e:\MyApp1.h(13): error C2501: 'CMyApp1::CTypedPtrArray' : 識別名を宣言するのに、
型が指定されていません。
e:\MyApp1.h(13): error C2238: ';' の前に無効なトークンがあります。
何が間違っているのでしょうか。
よろしくお願いします。
とりあえず、開発環境を
すみません、
環境:XP 。Net2002 MFC
よろしくお願いします。
VS2003(しか無いので)でやってみましたが、特に問題なく通ります。
無効と判定されているのは「CTypedPtrArray」のようなので、
1.当該の afxtempl.h を開いて確認
2.インクルードパスの確認
3.タイプミスの確認
など、してみてはどうでしょう。
MyApp1.h
の先頭付近に#include <afxtempl.h>を追加してみてはどうでしょう。
えちぜんさん
ご回答ありがとう。
>MyApp1.h
>の先頭付近に#include <afxtempl.h>を追加してみてはどうでしょう。
うまくできました。
確かに、
MyApp1.cppに
#include stdafx.hがありますが、
#include <afxtempl.h>を読んでないでしょうか。
どう理解すればいいでしょうか。
よろしくお願いします。
MyApp1.h
を#includeしているものの上にかならず#include stdafx.h がありますか?
たとえば
MyApp.cpp
#include stdafx.h
#include MyApp1.h
という順番になっているのか。
どうしても出来ないようであれば、単にMyApp1.hで#include <afxtmpl.h> を記述するれ
ばいいです。
MyApp1.cppはstdafx.hを読み込んでいますが、MyApp1.hは読み込んでないん
じゃないかなぁぐらいの考えです。
MyApp1.cppの中で、stdafx.hとMyApp1.hの両方を指定しているが、コンパイルできない
のはなぜだろうということですよね。
.hと.cppのコンパイル時の取り扱いや、宣言や定義の関係が絡んでいると思うのです
が、詳しくないので説明できません。
有識者の方、教えてください。
みなさん、ご回答ありがとう。
>1.当該の afxtempl.h を開いて確認
開けます。
>2.インクルードパスの確認
\c:Program Files\Micorsoft Visual Studio.Net\Vc7\atlmfc\inclde
>3.タイプミスの確認
なし
>MyApp.cpp
>#include stdafx.h
>#include MyApp1.h
>という順番になっているのか。
その順番になっています。#include stdafx.h一番上です。
自作プロジェクトはその現象になっています。
ダウンロードしたサンプルは
stdafx.h
#include <afxtempl.h>
になっています。
試しに
TypedPtrArray<CPtrArray, WCHAR*> m_Wchar;
別のクラスに置いても正常になっています。
>どうしても出来ないようであれば、単にMyApp1.hで#include <afxtmpl.h> を記述するれ
>ばいいです
そういう方法しかないです。
どうもありがとうございました。