引数の可変
覚えたての引数の可変を使ってみた素人であります。(独学です
見よう見真似で書いた為、目茶苦茶だと思われます。
自分で簡単なexeファイルを作ってみていて 引数の可変が必要となったので付け足そうとしていたのですが、「引数の可変」部の他
意外にもfor文からもエラーが出ました(while使えば済む話なのですが)
今までfor文をあまり使わずwhile文ばかり使っていた為、for文の基本的な構文が失敗しているのかもしれません。折角だから使ってみようとした結果がこれです。
#include <stdio.h>
#include <locale.h>
#include "DxLib.h"
#include <string.h>
#include <stdarg.h>
int i;
・・・略・・・
class CharsOut{
____int ypixel;
____char *hangar;
____int size;
____int HowMany;
____int list;
public:
____int CharsOuting(int HowMany,int ypixel,int size,...);
};
int CharsOuting(int HowMany,int ypixel,int size,...){
____va_start(list,HowMany);
____for (i=0;i<HowMany;i++){
________printf("%s",va_arg(list,char *));
____}
____va_end(list);
____return 0;
}
ypixel、size...といった変数等は気にしないでください。
成功していたらコードを足すつもりでした。
自分がやりたいことは、main関数から変数HowMany,*hangar等を受け取り 文字列*hangarを引数の分出力したいのであります。引数の可変は*hangarを何個か渡すつもりだったので使用しました。
こんな感じに使うつもりでしたc.CharsOuting(2,0,32,"I am ", "hangury");
※リストは(int HowMany,int ypixel,int size,...)です
※ハングリーのスペルが違う等ということはとてつもなくどうでもいいことなのです。
自分で「main関数から*hangarを受け取り」と書いておきながらリストに*hangarがない時点でおかしいと思ってはいるのですが、記述の方法が分からないので書けません。
以下エラー (名前とか一部改変・不要な部分省略
1>------ ビルド開始: プロジェクト:(≡ω≡.), 構成: Debug Win32 ------
1>コンパイルしています...
1>soucer.cpp
1>error C2040: 'i' : 'int' は 'int [5]' と間接操作のレベルが異なります。
1>error C2065: 'list' : 定義されていない識別子です。
1>error C2440: '=' : 'int' から 'int [5]' に変換できません。
1>配列型への変換はありませんが、参照またはポインタから配列への変換があります。
1>error C2446: '<' : 'int' 型から 'int *' 型への変換ができません。
1>整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
1>error C2040: '<' : 'int [5]' は 'int' と間接操作のレベルが異なります。
1>error C2105: '++' には左辺値が必要です。
1>error C2065: 'list' : 定義されていない識別子です。
1>error C2065: 'list' : 定義されていない識別子です。
1>ビルドログは "file://c:\・・・\Debug\BuildLog.htm" に保存されました。
1>(≡ω≡.) - エラー 8、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
文章能力なくて申し訳ありません。
ご回答頂ければ幸いであります。宜しくお願いします。
OS:WinXP
コンパイラ:Visual C++
お礼
試していただいて済みません。 原因としては、using namespace std;を指定していませんでした。 名前空間の指定とか、スコープを必要最低限に絞っていたのですが、 絞りすぎたみたいです・・・。 今度質問させてもらうときは、 一部分ではなく、もっと全体的なプログラムを書こうと思います。 ありがとうございました。