関数のエラー – プログラミング – Home

通知
すべてクリア

[解決済] 関数のエラー

固定ページ 1 / 2

wer
 wer
(@wer)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

error C2091: 関数は関数を返せません。
error C2511: 'hyouzi' : オーバーロードされたメンバ関数が '<Unknown>' にありません。
cl.exe の実行エラー

上のようなエラーが出るのですが関数は次のように書きました。

void CKteiView::hyouzi(CDC* pDC)(int x1[],int y1[],int a,int b,int c,int d,char
e[])
{
if(d==0)pDC->TextOut(x1[a],y1[a],e);
if(d==1)pDC->TextOut(x1[a],y1[a]-c,e);
   if(d==2)pDC->TextOut(x1[a]-b,y1[a]-c,e);
if(d==3)pDC->TextOut(x1[a]-b,y1[a],e);
return(0);
}


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

ヘッダの方はどうなっているの?


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

こんばんは、RAPTです。

・CKteiViewクラスのメンバ関数に、hyouzi という関数が宣言されていない。
・void 型の関数なのに、return(0); と書かれている。

# 個人的には、return 文は関数でも、マクロでもないので、return(0);
# ではなく、return 0; と書いて欲しいものだなぁ、と思っています。

Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>void CKteiView::hyouzi(CDC* pDC)(int x1[],int y1[],int a,int b,int c,int 
d,char e[])

は、ごく単純に

void CKteiView::hyouzi(CDC* pDC, int x1[],int y1[],int a,int b,int c,int
d,char e[])

とするべきなのでは?


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

> void CKteiView::hyouzi(CDC* pDC)(int x1[],int y1[],int a,int b,int c,int d,char e[])

これは,typedefを使ってわかりやすく書くと,
typedef void F(int [], int [], int, int, int, int, char []);
F CKteiView::hyouzi(CDC* pDC);
として扱われてしまいます。
Fはintの配列を二つ,intを四つ,charの配列を一つを引数としてこの順で受け取り,
値を返さない関数という型です。

本当にFを返したいのであれば,
F * CKteiView::hyouzi(CDC* pDC);
としないといけません。

まぁ,プログラムを見る限り,渋木さんの書かれたとおりだと思います。


返信引用
wer
 wer
(@wer)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

ご返答ありがとうございます。
渋木宏明(ひどり)さんが書いてくれたとおりにするとエラーが減りました。

error C2660: 'hyouzi' : 関数が不正な 7 個の実引数をともなって呼び出されました。

これはどういったエラーなのでしょうか。


返信引用
soto
 soto
(@soto)
ゲスト
結合: 22年前
投稿: 11
 

MSDNでC2660を検索してみれば分かるとおり
間違った実引数を与えて関数を呼び出しているのだと思います。
もう一度渡している値と引数の型などを見比べてみてはいかがでしょうか?


返信引用
wer
 wer
(@wer)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

すいません 関数の渡し方は

hyouzi(x1,y1,a,b,c,d,e);

でいいのでしょうか?


返信引用
soto
 soto
(@soto)
ゲスト
結合: 22年前
投稿: 11
 

x1,y1,a,b,c,d,e
はどのように宣言しているのでしょうか?
それぞれの「型」と「関数に渡す前に代入している値」を教えてください


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

>void CKteiView::hyouzi(CDC* pDC, int x1[],int y1[],int a,int b,int c,int
d,char e[])
だと
>hyouzi(x1,y1,a,b,c,d,e);

>CDC* pDC
の引数が足らなくないですか


返信引用
wer
 wer
(@wer)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

int x1[100],y1[100],a,b,c,d;
char e[100];
a=0; b=70; c=20;
x1[a]=385; y1[a]=78;
d=1;
sprintf(e,場所);
hyouzi(x1,y1,a,b,c,d,e);

このようになっています。


返信引用
wer
 wer
(@wer)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

hyouzi(CDC* pDC,x1,y1,a,b,c,d,e);
こうするとエラーが出ます。
やはりYuOさんが書いてくれたように
しなくてはならないのでしょうか?


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

> hyouzi(CDC* pDC,x1,y1,a,b,c,d,e);
> こうするとエラーが出ます。

関数の呼び出しについて,ちゃんとわかっていますか?
CDCへのポインタはウィンドウなどからきちんと取得してください。


返信引用
wer
 wer
(@wer)
ゲスト
結合: 22年前
投稿: 9
Topic starter  

>関数の呼び出しについて,ちゃんとわかっていますか?
hyouzi(x1,y1,a,b,c,d,e);
 でよかったですよね?
>CDCへのポインタはウィンドウなどからきちんと取得してください。
void CKteiView::hyouzi(CDC* pDC)(int x1[],int y1[],int a,int b,int c,int d,char
e[])

このようなとき取得の仕方はどうすればよいのでしょうか?


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

>hyouzi(x1,y1,a,b,c,d,e);
> でよかったですよね?

よくないって、第一引数は CDC* なんでしょ。

>>CDCへのポインタはウィンドウなどからきちんと取得してください。
>void CKteiView::hyouzi(CDC* pDC)(int x1[],int y1[],int a,int b,int c,int d,char
e[])
>
>このようなとき取得の仕方はどうすればよいのでしょうか?

その関数を呼び出す側で、なんとかしてデバイスコンテキストを取得する。としかいえない。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました