コンパイルエラー C2501 – プログラミング – Home

通知
すべてクリア

[解決済] コンパイルエラー C2501

固定ページ 1 / 4

はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

Win xpのVC++6.0です。ダイアログベースで作成しています。

はじめからあるヘッダーファイルの所に、『コンパイルエラー C2501』と出ます。識別
名を宣言するのに、型が指定されていません。との事です。

かなり基本的なエラーだと思いますが、どこで型を指定するのかがわかりません。

よろしくお願いします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

情報不足。解決への糸口がなにもない。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

毎回すいません。

はじめからあるソースファイルのクラスAAA.cppの『インプリテーション』という所に、
public:
CDatabaseEx m_db;

と追加しました。それによってさっきのエラーがでました。

CDatabaseEx を CStringに変更したらメンバーではないと指摘されました。

CDatabaseExが識別名を宣言するのに、型が指定されていません。と言われました。


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

> CDatabaseEx
ってなに?
自分で作ったクラス?

ということを、CDatabaseEx を使う前にコンパイラに教えてあげなければ
なりません。

> CDatabaseEx を CStringに変更したら
アリエナイ変更。C++を理解度を疑問視します。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

>> CDatabaseEx
>ってなに?
>自分で作ったクラス?

自分で作成したクラスです。

>ということを、CDatabaseEx を使う前にコンパイラに教えてあげなければ
>なりません。

教えたいのですが、具体的にどのように教えるのかが不明でした。
自分でも調べてみますが。

>> CDatabaseEx を CStringに変更したら
>アリエナイ変更。C++を理解度を疑問視します。

疑問視されても仕方ないミスだと思います。まだまだかなりの勉強不足というか
理解不足なので…。変更というか、試しにやってみたものなので。


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

> 自分で作成したクラスです。
ならば、そのクラスのあるヘッダファイル(もしくはcppファイル)
を、対象のクラス宣言の前でインクルードしてください。

というか、クラスに限らず、関数を使うときは #include ~ はしますよね?
(printfを使いたいときは #include <stdio.h> をしなければ使えないのと同じ)


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

>> 自分で作成したクラスです。
>ならば、そのクラスのあるヘッダファイル(もしくはcppファイル)
>を、対象のクラス宣言の前でインクルードしてください。

インクルードしてみます。書き込むクラスを間違っていたかもしれないので変更によっ
て改正されるかもしれないです。

>(printfを使いたいときは #include <stdio.h> をしなければ使えないのと同じ)

かなりわかりやすい例えでした。一番はじめに勉強してた事なのでこの例えは理解しや
すかったです。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

ヘッダーをプラスしても同様のコンパイルエラーが出ました。

シングルドキュメントのソースを参考にしているのですが、ダイアログベースとは基本
的に異なるものなのでしょうか??


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> ヘッダーをプラスしても同様のコンパイルエラーが出ました。

適切なヘッダを適切な位置に#includeしていないのでしょう。

> シングルドキュメントのソースを参考にしているのですが、
> ダイアログベースとは基本的に異なるものなのでしょうか??

なにを参考にしようが、元ネタが正しくコンパイルできるのならば
「あなたのしたこと」が間違っています。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

そうですか、なんだかゴチャゴチャしてきたみたいです。
参考データはコンパイル通るので、その辺は問題ないです。

シングルと同じように作成すればダイアログベースでもできるって事なのかな。普通に
考えてそうですよね。
ヘッダーの位置も同じようにしていますが、エラーが出るって事は確かに自分のどこか
のミスなのでしょう。


返信引用
Fly
 Fly
(@Fly)
ゲスト
結合: 21年前
投稿: 11
 

今でも
CDatabaseEx m_db;
をコメントにしてビルド通りますか??


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

今は他の所変更したんでおかしいけど、さっきの状態ならそれ関係コメントアウトすれ
ばコンパイルできました。もちろんビルドも。


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

どのように CDatabaseEx が宣言されているのでしょうか?
もしかしたら、namespaceが必要だったり、クラス内のクラスかもしれません。

が、そこらへんの情報が一切欠かれていない以上、#includeした位置がおかしいとしか
言いようがないです。

※回答者が想像で答えても、きりがないです。
 質問者は、回答者側のことも考えて質問しましょう。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

すいません。
質問している側なのに勝手な発言ばかりしてしまって。申し訳ないです。

一通り整理してみて原因を探したり、具体的な事が書けるように見つけますので少し時
間を下さい。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 22年前
投稿: 123
Topic starter  

public:
CDatabaseEx m_db;

は、参考にしているシングルドキュメントのソースでは、~View.hと~Doc.hにありまし
た。

ダイアログベースで作成する際に、Viewクラスの代わりにDlgクラスを使っていると思い
~Dlg.hに『CDatabaseEx m_db;』を追加して、Doc.hは新規でクラスを作成しそこに書き
込みました。

CDatabaseExというのはクラスの名前ではありません。CStringやintのように使用したい
ものです。

多分、不明な点があると思いますが、できるだけがんばって書いたつもりです。


返信引用
固定ページ 1 / 4

返信する

投稿者名

投稿者メールアドレス

タイトル *

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