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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Okade_Mitshiro
記事: 5
登録日時: 12年前

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

#1

投稿記事 by Okade_Mitshiro » 12年前

CLASSの中で下記を宣言するとエラーが出ますどうしたら解決できますか
エラー内容:
error C2143:構文エラー:','が'&'の前にありません


宣言内容:
void Copy(const CDib *image, const CRect &rect);

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 12年前

とりあえず&を半角の&に変えてみてください。
使用している言語は何ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Okade_Mitshiro
記事: 5
登録日時: 12年前

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

#3

投稿記事 by Okade_Mitshiro » 12年前

使用しているのはC++です。
&は半角だと掲示板では見ずらいと思って大文字にしました。
プログラムでは、ちゃんと半角で記載しております。
よろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 12年前

宣言自体に問題は無いようです。

コード:

#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型が定義されているか確認してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#5

投稿記事 by softya(ソフト屋) » 12年前

CRect クラスというとMFCかと思うのですが、無料のExpress版ではない有料のVisualStudioをお使いですよね?

【補足】
ご自身のライブラリだとしたら、そのCRect のヘッダやらインクルード部分を提示してもらわないと回答が難かしいです。

【補足の補足】
プロフィールにC言語を始めたばかりとありますが、一足飛びにC言語より難易度の高いC++の更に応用であるMFCに手を付けたということでしょうか?
C言語を飛ばしてC++でも良いのですが、C++の基礎は勉強されるべきかと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Okade_Mitshiro
記事: 5
登録日時: 12年前

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

#6

投稿記事 by Okade_Mitshiro » 12年前

はい、そうです。
有料の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++を使い出した
のは無謀無謀かもしれませんが、よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#7

投稿記事 by softya(ソフト屋) » 12年前

とりあえず、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++を使い出した
のは無謀無謀かもしれませんが、よろしくお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#8

投稿記事 by softya(ソフト屋) » 12年前

試してみましたが、私のところではコンパイル(VS2008)では出来るようです。
ところで、
#include "dib.h"
って自分自身のヘッダじゃないでしょうか? 意味が無いと思いますが。

【補足】
これ以外の部分に問題があってエラーが出ている可能性があります。

【補足の補足】
そのままエラーを再現できるソースコードを作って貼ってもらうと話が早いと思います。
※ 不要な部分は消すかコメントアウトしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Okade_Mitshiro
記事: 5
登録日時: 12年前

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

#9

投稿記事 by Okade_Mitshiro » 12年前

返信を2度送ってしまってすいません。
#include "dib.h"ですが、おっしゃる通り確かに意味ないですね。
すいません。プログラムから削除しておきます。

もう少し、プログラム中の他の部分をもう一度見直します。

Okade_Mitshiro
記事: 5
登録日時: 12年前

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

#10

投稿記事 by Okade_Mitshiro » 12年前

自己解決いたしました。
インクルードファイルの入れ子が重なり、頭がごちゃになり
必要だったヘッダーファイル(CRectのラッパークラス)がインクルード
されていませんでした。
初歩的なミスでした。
お騒がせしてすいませんでした。
回答いただいた方、ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る