何度も何度も申し訳ないです・・・。
龍神録プログラミング24章の
boss_shot_main関数内の
boss_shot_bullet[boss.knd]();//弾幕関数へ
これに対してエラー
「引数を取り込む関数には評価されません。」とでてしまいます。
このエラーを検索したところ
変数と関数で同じ名前を使用すると発生する と書いてあるのですが、
変数と関数は別の名前にしてありますし、龍神録プログラミングのサンプルと見比べても
どこが間違っているのか分かりません。
22章、23章のボム製作のところをスキップし、49章のホーミングを実装した他、
いくつか画像を変えたぐらいの改変しか行っていないのでそれが原因とは思えません。
どうすれば解決できるでしょうか…
24章にてエラー、引数を取り込む関数には…
Re:24章にてエラー、引数を取り込む関数には…
確かですけど。
--- define.h ---
//弾幕最大数
#define DANMAKU_MAX 50
の数値を弾幕データ数がオーバーしてるかもしれないです。
それか--- func.h ---の中身に問題があるかだと思います。
--- define.h ---
//弾幕最大数
#define DANMAKU_MAX 50
の数値を弾幕データ数がオーバーしてるかもしれないです。
それか--- func.h ---の中身に問題があるかだと思います。
Re:24章にてエラー、引数を取り込む関数には…
24章では弾幕関数が1個しか登録してないようですね void (*boss_shot_bullet[DANMAKU_MAX])() = { boss_shot_bulletH000, }; boss_shot_bullet[boss.knd](); でboss.kndが0以外だと「引数を取り込む関数には評価されません。」というエラーが出るのでしょう。(日本語になってないエラーメッセージですね)
Re:24章にてエラー、引数を取り込む関数には…
回答してくれた方々、有難うございます…
弾幕データ数はshotH.cppの方は多少増やしたものの、boss_shotH.cppの方は
24章プログラミングをコピーしたような状態になっていますので、まだ1つだけです。
func.hも同様なので、そこに問題があるようには思えません…
boss.kndも弄くってみましたが、変化は見られないようです…
弾幕データ数はshotH.cppの方は多少増やしたものの、boss_shotH.cppの方は
24章プログラミングをコピーしたような状態になっていますので、まだ1つだけです。
func.hも同様なので、そこに問題があるようには思えません…
boss.kndも弄くってみましたが、変化は見られないようです…
Re:24章にてエラー、引数を取り込む関数には…
ちなみにSHさんのエラーは、ゲーム実行時のエラーになるのでしょうか?
多分toyoさんの回答が原因だと思います。
言われてるとおり、boss.kndが0以外の数値になるとその時点でエラーが起こります。
私も以前似たようなエラーがあったと思い試してみたのですが・・・
boss.kndが0以外だと「読み込み中にアクセス違反が発生しました」とエラーがでてゲームが中断されます。
ボスを倒すと、void enter_boss(int num)が実行され
boss.knd++;
で加算するので、boss.kndが1になります。
これが原因でエラーになるのではないでしょうか?
多分toyoさんの回答が原因だと思います。
言われてるとおり、boss.kndが0以外の数値になるとその時点でエラーが起こります。
私も以前似たようなエラーがあったと思い試してみたのですが・・・
boss.kndが0以外だと「読み込み中にアクセス違反が発生しました」とエラーがでてゲームが中断されます。
ボスを倒すと、void enter_boss(int num)が実行され
boss.knd++;
で加算するので、boss.kndが1になります。
これが原因でエラーになるのではないでしょうか?
Re:24章にてエラー、引数を取り込む関数には…
ビルド時のエラーです
この時点ではボスに当たり判定がないので
boss_knd++;
によってboss_kndの値が加算されることはありません…
enter_boss関数では最初にboss_kndの値が-1になっていますが、
これを0や他の値に変えたり、boss_knd++を消しても変化はありませんでした。
boss_shot_main関数内の
boss_shot_bullet[boss.knd](); にマウスのカーソルをあてると
void (*boss_shot_bullet[3][6][50])(int) と表示されるのですが、
これが原因のような気がしているのですが…
この時点ではボスに当たり判定がないので
boss_knd++;
によってboss_kndの値が加算されることはありません…
enter_boss関数では最初にboss_kndの値が-1になっていますが、
これを0や他の値に変えたり、boss_knd++を消しても変化はありませんでした。
boss_shot_main関数内の
boss_shot_bullet[boss.knd](); にマウスのカーソルをあてると
void (*boss_shot_bullet[3][6][50])(int) と表示されるのですが、
これが原因のような気がしているのですが…
Re:24章にてエラー、引数を取り込む関数には…
ためしに --- func.h --- extern void boss_shot_bulletH000(); void (*boss_shot_bullet[3][6][DANMAKU_MAX])(int) = { boss_shot_bulletH000, }; と書き換えたら同じエラーを確認できました。 赤文字が原因だと思うのですが・・・。 もしかしたら、 --- boss_shot.cpp --- の上から2行目 #include "../include/func.h"となっているのですが、インクルード先のファイルが間違っていませんか?
自分で書いてるらしいので、もしかしたらファイル位置などが間違ってるかも知れませんよ。
今、初めて知った機能なんですが、boss_shot_bullet[boss.knd](); にマウスカーソルを当て
右クリックから「定義へ移動」という機能があるみたいなので便利かもです。
Re:24章にてエラー、引数を取り込む関数には…
void (*boss_shot_bullet[3][6][50])(int)
これはおかしいです。引数は無いはずです。
void (*boss_shot_bullet[DANMAKU_MAX])();
のはずです。
Re:24章にてエラー、引数を取り込む関数には…
void (*boss_shot_bullet[3][6][50])(int);
これは以前私が龍神録1の時に使っていた宣言と同じです・・。
1面の最大登録弾幕数が50で、通常ステージ5+EX1の6エリアあり、難易度が3種類と言う意味で。
何かの間違いでどこかのコードに潜り込んだのかもしれません。
そのプロジェクトごと圧縮してこちらで拝見させていただく事はできないでしょうか?
また、参考にされたプログラムは館だけですか?
これは以前私が龍神録1の時に使っていた宣言と同じです・・。
1面の最大登録弾幕数が50で、通常ステージ5+EX1の6エリアあり、難易度が3種類と言う意味で。
何かの間違いでどこかのコードに潜り込んだのかもしれません。
そのプロジェクトごと圧縮してこちらで拝見させていただく事はできないでしょうか?
また、参考にされたプログラムは館だけですか?
Re:24章にてエラー、引数を取り込む関数には…
回答していただき、至極感謝しております。
24章の方では「includeフォルダにfunc.hのファイルを追加」と書いてあったのに対し、
自分がVisual C++2008の方から追加したのが原因だったようです。
includeした物が追加したほうではなく、元からあった別のfunc.hをインクルードしてしまったようです。
迷惑をかけてしまい、すみませんでした…
ちなみに参考にしたプログラムは龍神録プログラミングの館のみでした。
24章の方では「includeフォルダにfunc.hのファイルを追加」と書いてあったのに対し、
自分がVisual C++2008の方から追加したのが原因だったようです。
includeした物が追加したほうではなく、元からあった別のfunc.hをインクルードしてしまったようです。
迷惑をかけてしまい、すみませんでした…
ちなみに参考にしたプログラムは龍神録プログラミングの館のみでした。