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);
}
ヘッダの方はどうなっているの?
こんばんは、RAPTです。
・CKteiViewクラスのメンバ関数に、hyouzi という関数が宣言されていない。
・void 型の関数なのに、return(0); と書かれている。
# 個人的には、return 文は関数でも、マクロでもないので、return(0);
# ではなく、return 0; と書いて欲しいものだなぁ、と思っています。
Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0
>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[])
とするべきなのでは?
> 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);
としないといけません。
まぁ,プログラムを見る限り,渋木さんの書かれたとおりだと思います。
ご返答ありがとうございます。
渋木宏明(ひどり)さんが書いてくれたとおりにするとエラーが減りました。
error C2660: 'hyouzi' : 関数が不正な 7 個の実引数をともなって呼び出されました。
これはどういったエラーなのでしょうか。
MSDNでC2660を検索してみれば分かるとおり
間違った実引数を与えて関数を呼び出しているのだと思います。
もう一度渡している値と引数の型などを見比べてみてはいかがでしょうか?
すいません 関数の渡し方は
hyouzi(x1,y1,a,b,c,d,e);
でいいのでしょうか?
x1,y1,a,b,c,d,e
はどのように宣言しているのでしょうか?
それぞれの「型」と「関数に渡す前に代入している値」を教えてください
>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
の引数が足らなくないですか
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);
このようになっています。
hyouzi(CDC* pDC,x1,y1,a,b,c,d,e);
こうするとエラーが出ます。
やはりYuOさんが書いてくれたように
しなくてはならないのでしょうか?
> hyouzi(CDC* pDC,x1,y1,a,b,c,d,e);
> こうするとエラーが出ます。
関数の呼び出しについて,ちゃんとわかっていますか?
CDCへのポインタはウィンドウなどからきちんと取得してください。
>関数の呼び出しについて,ちゃんとわかっていますか?
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[])
このようなとき取得の仕方はどうすればよいのでしょうか?
>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[])
>
>このようなとき取得の仕方はどうすればよいのでしょうか?
その関数を呼び出す側で、なんとかしてデバイスコンテキストを取得する。としかいえない。