CTypedPtrArrayについて – プログラミング – Home

通知
すべてクリア

[解決済] CTypedPtrArrayについて


cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

お世話になっています。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: ';' の前に無効なトークンがあります。

何が間違っているのでしょうか。
よろしくお願いします。


引用未解決
トピックタグ
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

とりあえず、開発環境を


返信引用
cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

すみません、
環境:XP 。Net2002 MFC

よろしくお願いします。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

VS2003(しか無いので)でやってみましたが、特に問題なく通ります。
無効と判定されているのは「CTypedPtrArray」のようなので、

1.当該の afxtempl.h を開いて確認
2.インクルードパスの確認
3.タイプミスの確認

など、してみてはどうでしょう。


返信引用
えちぜん
 えちぜん
(@えちぜん)
ゲスト
結合: 18年前
投稿: 15
 

MyApp1.h
の先頭付近に#include <afxtempl.h>を追加してみてはどうでしょう。


返信引用
cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

えちぜんさん
ご回答ありがとう。

>MyApp1.h
>の先頭付近に#include <afxtempl.h>を追加してみてはどうでしょう。
うまくできました。

確かに、
MyApp1.cppに
#include stdafx.hがありますが、
#include <afxtempl.h>を読んでないでしょうか。
どう理解すればいいでしょうか。

よろしくお願いします。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

MyApp1.h

を#includeしているものの上にかならず#include stdafx.h がありますか?

たとえば
MyApp.cpp

#include stdafx.h
#include MyApp1.h

という順番になっているのか。

どうしても出来ないようであれば、単にMyApp1.hで#include <afxtmpl.h> を記述するれ
ばいいです。


返信引用
えちぜん
 えちぜん
(@えちぜん)
ゲスト
結合: 18年前
投稿: 15
 

MyApp1.cppはstdafx.hを読み込んでいますが、MyApp1.hは読み込んでないん
じゃないかなぁぐらいの考えです。

MyApp1.cppの中で、stdafx.hとMyApp1.hの両方を指定しているが、コンパイルできない
のはなぜだろうということですよね。
.hと.cppのコンパイル時の取り扱いや、宣言や定義の関係が絡んでいると思うのです
が、詳しくないので説明できません。

有識者の方、教えてください。


返信引用
cc
 cc
(@cc)
ゲスト
結合: 23年前
投稿: 80
Topic starter  

みなさん、ご回答ありがとう。

>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> を記述するれ
>ばいいです
そういう方法しかないです。

どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました