ページ 11

構文エラー:','が'&'の前にありませんのエラー

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のラッパークラス)がインクルード
されていませんでした。
初歩的なミスでした。
お騒がせしてすいませんでした。
回答いただいた方、ありがとうございました。