ページ 1 / 1
構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月11日(金) 22:51
by Okade_Mitshiro
CLASSの中で下記を宣言するとエラーが出ますどうしたら解決できますか
エラー内容:
error C2143:構文エラー:','が'&'の前にありません
宣言内容:
void Copy(const CDib *image, const CRect &rect);
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月11日(金) 22:52
by みけCAT
とりあえず&を半角の&に変えてみてください。
使用している言語は何ですか?
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月11日(金) 22:57
by Okade_Mitshiro
使用しているのはC++です。
&は半角だと掲示板では見ずらいと思って大文字にしました。
プログラムでは、ちゃんと半角で記載しております。
よろしくお願いします。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月11日(金) 23:05
by みけCAT
宣言自体に問題は無いようです。
コード:
#include <cstdio>
typedef int CDib;
typedef int CRect;
void Copy(const CDib *image, const CRect &rect);
int main() {
CDib a=17;
CRect b=334;
Copy(&a,b);
return 0;
}
void Copy(const CDib *image, const CRect &rect) {
printf("Copy called image=%p, *image=%d, rect=%d\n",image,*image,rect);
}
https://ideone.com/sLdoMZ
CRect型が定義されているか確認してください。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月11日(金) 23:30
by softya(ソフト屋)
CRect クラスというとMFCかと思うのですが、無料のExpress版ではない有料のVisualStudioをお使いですよね?
【補足】
ご自身のライブラリだとしたら、そのCRect のヘッダやらインクルード部分を提示してもらわないと回答が難かしいです。
【補足の補足】
プロフィールにC言語を始めたばかりとありますが、一足飛びにC言語より難易度の高いC++の更に応用であるMFCに手を付けたということでしょうか?
C言語を飛ばしてC++でも良いのですが、C++の基礎は勉強されるべきかと思います。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月12日(土) 00:30
by Okade_Mitshiro
はい、そうです。
有料のVisualStudioC++2003を使用しております。
CRect は長方形の左上の頂点の座標 (left, top) と右下の頂点の座標 (right, bottom) で
定まるMFCクラスで下記のように使っております。
例:
CRect r; // オブジェクトの生成
r.left = 0;
r.top = 0;
r.right = 100;
r.bottom = 50;
CDibは、プログラム中に生成したクラスです。
エラーが出たヘッダーファイルか下記のような感じです。
#ifndef __Dib_h__
#define __Dib_h__
#include "StdAfx.h"
#include <windows.h>
#include "dib.h"
class CFile;
class CDC;
class CDib {
public:
・
・
・
・
void Copy(const CDib *image, const CRect &rect);
・
・
・
・
protected:
メンバー変数(省略)
};
// インラインメンバ関数
inline void CDib::Copy(const CDib *image, const CRect &rect)
{
中身省略
}
#endif
こんな感じなんでが。
分かりますでしょうか。
確かに、初心者でC言語を少し勉強して、いきなりC++を使い出した
のは無謀無謀かもしれませんが、よろしくお願いします。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月12日(土) 00:35
by softya(ソフト屋)
とりあえず、codeタグをお使いください。
Okade_Mitshiro さんが書きました:はい、そうです。
有料のVisualStudioC++2003を使用しております。
CRect は長方形の左上の頂点の座標 (left, top) と右下の頂点の座標 (right, bottom) で
定まるMFCクラスで下記のように使っております。
例:
CRect r; // オブジェクトの生成
r.left = 0;
r.top = 0;
r.right = 100;
r.bottom = 50;
CDibは、プログラム中に生成したクラスです。
エラーが出たヘッダーファイルか下記のような感じです。
コード:
#ifndef __Dib_h__
#define __Dib_h__
#include "StdAfx.h"
#include <windows.h>
#include "dib.h"
class CFile;
class CDC;
class CDib {
public:
・
・
・
・
void Copy(const CDib *image, const CRect &rect);
・
・
・
・
protected:
メンバー変数(省略)
};
// インラインメンバ関数
inline void CDib::Copy(const CDib *image, const CRect &rect)
{
中身省略
}
#endif
こんな感じなんでが。
分かりますでしょうか。
確かに、初心者でC言語を少し勉強して、いきなりC++を使い出した
のは無謀無謀かもしれませんが、よろしくお願いします。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月12日(土) 00:40
by softya(ソフト屋)
試してみましたが、私のところではコンパイル(VS2008)では出来るようです。
ところで、
#include "dib.h"
って自分自身のヘッダじゃないでしょうか? 意味が無いと思いますが。
【補足】
これ以外の部分に問題があってエラーが出ている可能性があります。
【補足の補足】
そのままエラーを再現できるソースコードを作って貼ってもらうと話が早いと思います。
※ 不要な部分は消すかコメントアウトしてください。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月12日(土) 00:52
by Okade_Mitshiro
返信を2度送ってしまってすいません。
#include "dib.h"ですが、おっしゃる通り確かに意味ないですね。
すいません。プログラムから削除しておきます。
もう少し、プログラム中の他の部分をもう一度見直します。
Re: 構文エラー:','が'&'の前にありませんのエラー
Posted: 2014年4月12日(土) 10:24
by Okade_Mitshiro
自己解決いたしました。
インクルードファイルの入れ子が重なり、頭がごちゃになり
必要だったヘッダーファイル(CRectのラッパークラス)がインクルード
されていませんでした。
初歩的なミスでした。
お騒がせしてすいませんでした。
回答いただいた方、ありがとうございました。