CLASSの中で下記を宣言するとエラーが出ますどうしたら解決できますか
エラー内容:
error C2143:構文エラー:','が'&'の前にありません
宣言内容:
void Copy(const CDib *image, const CRect &rect);
構文エラー:','が'&'の前にありませんのエラー
Re: 構文エラー:','が'&'の前にありませんのエラー
とりあえず&を半角の&に変えてみてください。
使用している言語は何ですか?
使用している言語は何ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
Okade_Mitshiro
- 記事: 5
- 登録日時: 12年前
Re: 構文エラー:','が'&'の前にありませんのエラー
使用しているのはC++です。
&は半角だと掲示板では見ずらいと思って大文字にしました。
プログラムでは、ちゃんと半角で記載しております。
よろしくお願いします。
&は半角だと掲示板では見ずらいと思って大文字にしました。
プログラムでは、ちゃんと半角で記載しております。
よろしくお願いします。
Re: 構文エラー:','が'&'の前にありませんのエラー
宣言自体に問題は無いようです。
https://ideone.com/sLdoMZ
CRect型が定義されているか確認してください。
#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);
}CRect型が定義されているか確認してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 構文エラー:','が'&'の前にありませんのエラー
CRect クラスというとMFCかと思うのですが、無料のExpress版ではない有料のVisualStudioをお使いですよね?
【補足】
ご自身のライブラリだとしたら、そのCRect のヘッダやらインクルード部分を提示してもらわないと回答が難かしいです。
【補足の補足】
プロフィールにC言語を始めたばかりとありますが、一足飛びにC言語より難易度の高いC++の更に応用であるMFCに手を付けたということでしょうか?
C言語を飛ばしてC++でも良いのですが、C++の基礎は勉強されるべきかと思います。
【補足】
ご自身のライブラリだとしたら、そのCRect のヘッダやらインクルード部分を提示してもらわないと回答が難かしいです。
【補足の補足】
プロフィールにC言語を始めたばかりとありますが、一足飛びにC言語より難易度の高いC++の更に応用であるMFCに手を付けたということでしょうか?
C言語を飛ばしてC++でも良いのですが、C++の基礎は勉強されるべきかと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Okade_Mitshiro
- 記事: 5
- 登録日時: 12年前
Re: 構文エラー:','が'&'の前にありませんのエラー
はい、そうです。
有料の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++を使い出した
のは無謀無謀かもしれませんが、よろしくお願いします。
有料の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: 構文エラー:','が'&'の前にありませんのエラー
とりあえず、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: 構文エラー:','が'&'の前にありませんのエラー
試してみましたが、私のところではコンパイル(VS2008)では出来るようです。
ところで、
#include "dib.h"
って自分自身のヘッダじゃないでしょうか? 意味が無いと思いますが。
【補足】
これ以外の部分に問題があってエラーが出ている可能性があります。
【補足の補足】
そのままエラーを再現できるソースコードを作って貼ってもらうと話が早いと思います。
※ 不要な部分は消すかコメントアウトしてください。
ところで、
#include "dib.h"
って自分自身のヘッダじゃないでしょうか? 意味が無いと思いますが。
【補足】
これ以外の部分に問題があってエラーが出ている可能性があります。
【補足の補足】
そのままエラーを再現できるソースコードを作って貼ってもらうと話が早いと思います。
※ 不要な部分は消すかコメントアウトしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Okade_Mitshiro
- 記事: 5
- 登録日時: 12年前
Re: 構文エラー:','が'&'の前にありませんのエラー
返信を2度送ってしまってすいません。
#include "dib.h"ですが、おっしゃる通り確かに意味ないですね。
すいません。プログラムから削除しておきます。
もう少し、プログラム中の他の部分をもう一度見直します。
#include "dib.h"ですが、おっしゃる通り確かに意味ないですね。
すいません。プログラムから削除しておきます。
もう少し、プログラム中の他の部分をもう一度見直します。
-
Okade_Mitshiro
- 記事: 5
- 登録日時: 12年前
Re: 構文エラー:','が'&'の前にありませんのエラー
自己解決いたしました。
インクルードファイルの入れ子が重なり、頭がごちゃになり
必要だったヘッダーファイル(CRectのラッパークラス)がインクルード
されていませんでした。
初歩的なミスでした。
お騒がせしてすいませんでした。
回答いただいた方、ありがとうございました。
インクルードファイルの入れ子が重なり、頭がごちゃになり
必要だったヘッダーファイル(CRectのラッパークラス)がインクルード
されていませんでした。
初歩的なミスでした。
お騒がせしてすいませんでした。
回答いただいた方、ありがとうございました。