• 締切済み

新規クラスの使い方

<環境> WIN98 VC++6.0 MFC  デフォルトでプロジェクトを作成。 オリジナルの新規クラスを作成。 新規クラス内でXXview.h内で宣言した変数を使いたいので 新規クラス内で#include <XXview.h>とすると、 error C2143: 構文エラー : ';' が '*' の前に必要です。等のエラーが出ます。 これを回避する方法を教えてください。

  • mk1234
  • お礼率94% (1832/1940)

みんなの回答

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> #include "uuView.h"//これを追加しただけです このクラスの宣言は? class uuView { ~ }; //← のセミコロンを忘れると、類似のエラーが出ていた気がします。

mk1234
質問者

お礼

回答ありがとうございます。 ;の付け忘れは有りませんでした。

mk1234
質問者

補足

ヘッダのインクルードの問題は、以下のコードが悪さをしてるようです。 リリースモードではエラーは出ませんでした。 #ifndef _DEBUG // ggView.cpp ファイルがデバッグ環境の時使用されます。 inline CGgDoc* CGgView::GetDocument() { return (CGgDoc*)m_pDocument; } #endif

回答No.1

こんにちは。 #includeは.cppに記述した、ということですよね!? おっしゃているエラーは、構文的に間違っているときにできますので、 実際に書いたコードを示していただく必要があります。

mk1234
質問者

お礼

// yy.cpp : 自作クラス // #include "stdafx.h" #include "uu.h" #include "yy.h" #include "uuView.h"//これを追加しただけです #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

関連するQ&A

  • VC++2005でLAPACKを使用するとエラーが出る

    タイトルの通りなのですが,VC++2005でLAPACKを使用するとエラーが出て,困っています. vc\include\clapack.h(1486) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。 vc\include\clapack.h(1486) : error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。 vc\include\clapack.h(1486) : warning C4091: '' : 変数が何も宣言されていないときは、'char' の左辺を無視します。 vc\include\clapack.h(1486) : error C2143: 構文エラー : ';' が ',' の前にありません。 vc\include\clapack.h(1486) : error C2059: 構文エラー : ',' vc\include\clapack.h(1486) : error C2059: 構文エラー : ')' vc\include\clapack.h(2861) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。 vc\include\clapack.h(2861) : error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。 vc\include\clapack.h(2861) : warning C4091: '' : 変数が何も宣言されていないときは、'char' の左辺を無視します。 vc\include\clapack.h(2861) : error C2143: 構文エラー : ';' が ',' の前にありません。 vc\include\clapack.h(2861) : error C2059: 構文エラー : ',' vc\include\clapack.h(2861) : error C2059: 構文エラー : ')' 主にhttp://sakura.math.kyushu-u.ac.jp/wiki/index.php?%E8%A8%88%E7%AE%97%E6%A9%9F%E8%A8%AD%E5%AE%9A%2FCLAPACKを参考にして作成しているのですが・・・上手くいきません.詳しい方,ご教授お願い致します.

  • Visual C++ 2005 MFCアプリのクラス作成について

    Windows XP SP3 Visual C++ 2005 pro MFCアプリケーション シングルドキュメント 以上の環境でアプリケーションを作りたいと思っています。 C++は、C言語をベースという意味ではそれなりにはわかっているつもりです(自信はないですが...)。 本当はSDKを学んだ方がよろしいんでしょうが、時間の都合上MFCでやることにしました。 ちなみに、VC++を使ったプログラミングは初めてのものです。 そこで質問なのですが、 通常のC++においてクラスを作るときは、cppファイルとhファイルで分けてつくってmainのcppでインクルードしますよね。 VC++ MFCも 「C++クラスの追加」 でウィザードを利用してあるクラスAを作成てみまして、わかる方にはわかるでしょうけど、もちろん以下のように出力されました。 A.h------------------ #pragma once class A { public: A(void); public: ~A(void); }; A.cpp---------------------- #include "A.h" #include "StdAfx.h" A::A(void) { } A::~A(void) { } そしてとりあえず、その状態で何も手を加えずにとりあえずコンパイルにかけてみたところいきなり以下のようなエラーが出ました。 error C2653: 'A' :識別子がクラス名でも名前空間名でもありません。 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません warning C4508: 'A' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。 error C2653: 'A' : 識別子がクラス名でも名前空間名でもありません fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します 何も手を加えていない状態でこのようなエラーが出るということは、どこかでこのhやcppをインクルードする必要があるのだろうとは思います(でもそういう類のことはウィザードで作成した際に、VC++が自動でコーディングしてくれたりしないのでしょうかね...)。 むしろ、MFCでこのような単純なC++クラスを作ること自体があまり好まれないことなのでしょうか。 もちろんこのクラスを作っていってから、ある処理をさせていこうと思っているので、自分としては以前から行っていたC++のようにコーディングしていきたいと思うのですが、もし好ましくないようならどのファイルにMFC的ではない、ただのC++的なクラスを定義したりすればよろしいのでしょうか。 もしくは、好ましくなくても何らかの対処方法があれば教えていただきたく思います。 Webで調べても MFCクラスの作成などのことしか書いてないので、ちょっとわからなくて困っています。よろしくお願いします。

  • VisualC++2005 「C2039 SetWindowTextAがCButton のメンバでは無い」と出てしまう。

    VisualC++2005において、プロジェクト(ソリューション)を以下のように構成した場合に表記のエラーが出ます。 解決方法ご存知でしたら教えて下さい。 (MFC初心者です) 【構成】 ・新規のソリューションにMFCのMDI形式のプロジェクトを作成 ・さらにMFC拡張DLLのプロジェクトを作成する (1つのソリューションに2つのプロジェクトを同居させる) ・MDIのプロジェクトは特に何もしない ・MFC拡張DLL側でダイアログを1ヶ作成する ・作成したダイアログのクラスを作成 ・OnInitDialog()を作成 ・作成したダイアログにあるボタンにメンバ変数(例:m_Button)を割り当てる ・OnInitDialog()内でm_Button.SetWindowText("HOGE");と記述 ・コンパイルするとエラーが出る 【エラー】 error C2039: 'SetWindowTextA' : 'CButton' のメンバではありません。 1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(2990) : 'CButton' の宣言を確認してください。 特に変わったことをしているわけではありません。 さらに「m_Button.」と入力した時点で入力補助機能が働くので m_Buttonはちゃんと認識されていると思います。 'CButton' 固有のメンバ関数の使用には問題ありませんが、 継承されているメンバ関数はことごとくNGです。

  • モードレスダイアログを作成しようと思ったら....。

    環境:Win2000pro, VC++6.0sp6, MFC, ダイアログ ベースにてモードレスのダイアログ表示を行おうと思い 表示したいダイアログクラスをCModelessDlgとし、 基本となるクラスをCTestDlgとして、CTestDlgの メンバ変数にCModelessDlg* pDlg;と宣言したのですが、 コンパイルを実行すると、下記のようなエラーが出ます。 (1)error C2143: 構文エラー : ';' が '*' の前に必要です。 (2)error C2501: 'CModelessDlg' : 識別名を宣言するのに、型が指定されていません。 (3)error C2501: 'pDlg' : 識別名を宣言するのに、型が指定されていません。 宣言が間違っている時等のお馴染みのエラーですが、何故 出るのかが分りません。ダイアログクラスの作り方等が いけないのでしょうか? どなたか、推測でも構わないのでよろしくお願い致しま す。

  • MFCのインクルードファイルについて

    VC++のMFCについて教えていただきたいのですが。 VC++のプロジェクトには、MFCとかコンソールアプリとかあると思うんですが、普通のWinアプリやコンソールアプリにはなく、MFCで標準的にインクルードされるファイルってどんなものがあるのでしょうか。 今、コンソールアプリでコンパイルしたらエラーとなり、MFCでするとエラーなくコンパイルできます。 よろしくお願いします。

  • atlbase.h と afxwin.hの同時定義

    こんにちは、honiyonです。  VC++で、MFCを用いてNT用のサービスプログラムを作成しています。  ATL COM AppWizardで、サービスアプリケーションを選択したので、atlbase.hが StdAfx.hに宣言されています。  CString型を使いたいので、該当cppファイルに、afxwin.hをincludeしました。 何故か StdAfx.hより先に afxwin.hをincludeすると、CStringの定義が正しくされないようなので、後にもってきています。 #include "StdAfx.h" #include <AfxWin.h">  この状態だと、atlbase.h, AfxWin.h双方で windows.hをincludeしているようで、AfxWin.hが参照する afxv_w32.hで、以下のようなエラーが発生します。 fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>  この問題を回避するために、atlbase.hやAfxWin.hを改造して回避出来そうですが、それは今後別のものを作る時の支障になりそうなので避けたいです。  その他の方法で回避する事は出来ないでしょうか?  宜しくお願いします(..

  • CMainFrameからCPppView::OnFilePrintPreview();を呼びたい。

    環境はWIN98 VC++6.0 MFCです。 以下のようなコードで左クリックにて印刷プレビューが開きます。 void CPppView::OnLButtonDown(UINT nFlags, CPoint point) { CPppView::OnFilePrintPreview(); CView::OnLButtonDown(nFlags, point); } これをCMainFrameから呼びたくて、以下のようにしました。 #include "pppView.h" void CMainFrame::OnMenuitem32771() { CPppView::OnFilePrintPreview(); } すると以下のようなエラーが出てしまいます。 どうすればCMainFrame内で使えるようになりますか? よろしくご指導ください。 MainFrm.cpp c:\windows\デスクトップ\ppp\pppview.h(21) : error C2143: 構文エラー : ';' が '*' の前に必要です。 c:\windows\デスクトップ\ppp\pppview.h(21) : error C2501: 'CPppDoc' : 識別名を宣言するのに、型が指定されていません。 c:\windows\デスクトップ\ppp\pppview.h(21) : error C2501: 'GetDocument' : 識別名を宣言するのに、型が指定されていません。 C:\WINDOWS\デスクトップ\ppp\MainFrm.cpp(113) : error C2248: 'OnFilePrintPreview' : protected メンバ (クラス 'CView' で宣言されている)にアクセスできません。 c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3660) : 'OnFilePrintPreview' の宣言を確認してください。 C:\WINDOWS\デスクトップ\ppp\MainFrm.cpp(113) : error C2352: 'CView::OnFilePrintPreview' : 静的でないメンバ関数の中で呼び出しが正しくありません。 c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3660) : 'OnFilePrintPreview' の宣言を確認してください。 cl.exe の実行エラー

  • 住所録用クラスについて

    <環境> WIN98 VC++6.0 MFC  住所録用クラスを作ろうと思います。 特に基本クラスを設定するつもりは無いのですが、クラスの新規作成を選ぶと基本クラスを選択する必要が有りますよね。 このような場合は、何を選択すれば良いのでしょうか?

  • クラスについて

    環境 WIN2000 VC++6.0 MFC にて あるクラス(CShellListCtrlEx)内部に別のクラス(CCharEditEx)を作成することなんて可能なんでしょうか?。 ある程度は、できそうな気がするのですが・・・。 どうしても、仮想関数やWindowsメッセージハンドラが使えないで困っています。 どなたかご存知でしたら、ご教授お願いします。

  • クラスがメンバーとしてクラスを持つ時の宣言について

    自作クラスMainClassがMyClassというクラスをメンバー変数として持つ場合、宣言時に引数をいくつか持つコンストラクタを呼び出そうとすると構文エラーとなります。 class MyClass { public: MyClass(int, int); } class MainClass { private: MyClass myclass(10,10); } このような宣言はできないのでしょうか。 引数なしのコンストラクタは呼び出せているようです。

専門家に質問してみよう