1 :
以下、名無しにかわりましてVIPがお送りします :
2009/03/08(日) 19:47:12.11 ID:LAdWo1R60 おわり
ここはボクが乗っ取ったっ
4 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 19:55:14.67 ID:O2rN7Qli0
妹「まずは開会式だ」
あぼーん
6 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 20:26:34.84 ID:LAdWo1R60
今日は各地でアンチハム運動が展開されてるみたいだな 何かあったのか?
8 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 20:49:33.94 ID:U8SOcadY0
そいや、昼にそんなスレたってたな
>>7 なんもないさ 火種はあったから あとはノリでずどーん
でC++で構造体 Charadateをつくって
そこからクラスないで
class HERO :public Chara{
vector<Charadate> hdate;
public:
void init();
};
#endif
void HERO::init(){
hdate.clear();
Charadate hero;
hero.maxhp=200; hero.hp=150;
hero.atk=320; hero.def=211; hero.matk=102; hero.mdef=321 ;
hero.exp=21; hero.lv=1;
hero.state=A_NORMAL;
hdate.push_back(hero);
}
ってやろうとしてるんだが これだけ見てまず書式の段階で間違えてるのどこかない?
>>9 #if がないのに #endif だけある
dataのつもりがdate
>>10 すまん そこらへんは端折った・・・ メインではしっかり書いてるっす
#include "hero.h"
#include <iostream>
int main(){
HERO henntai;
henntai.init;
cout<<"",henntai.hdate.at(hp)<<endl;
cout<< "uheheheh"<< endl;
return 0;
}
1>hero.cpp
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\charadate.h(4) : error C2143: 構文エラー : ';' が 'using' の前にありません。
1>main.cpp
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\charadate.h(4) : error C2143: 構文エラー : ';' が 'using' の前にありません。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(6) : error C3867: 'HERO::init': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&HERO::init' を使用してください
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(9) : error C2065: 'hp' : 定義されていない識別子です。
というエラーが 全部は張り切れないんで 聞かれ次第貼ります
>>12 ところで
henntai.init();
の()を忘れてるな
15 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 21:04:19.19 ID:oizp8O1d0
#ifndef __HERO_H__ #define __HERO_H__ #include "Chara.h" #include "charadata.h" #include <vector> using namespace std; class HERO :public Chara{ public: vector<Charadata> hdata; void init(); }; #endif hero.cpp #include "hero.h" #include <vector> void HERO::init(){ hdata.clear(); Charadata hero; hero.maxhp=200; hero.hp=150; hero.atk=320; hero.def=211; hero.matk=102; hero.mdef=321 ; hero.exp=21; hero.lv=1; hero.state=A_NORMAL; hdata.push_back(hero); }
>>15 ここではあまり問題なさそうだから次は "Chara.h" "charadata.h"を
あとヘッダで using namespace は禁止
名前空間の存在意義がなくなる
#ifndef __CHARA_H__ #define __CHARA_H__ #include <iostream> class Chara{ protected: virtual void attack(){} virtual void tokugi(){} virtual void magic(){} virtual void hitattack(){} } #endif #ifndef __CHARADATA_H__ #define __CHARADATA_H__ #include <iostream> struct Charadata; enum BAD_STATUS{ A_NORMAL, A_POISON , A_MAGICSEAL, A_PANDMSEAL // 左から 正常 毒 魔法封印 毒+魔法封印 敵味方自分共通だからこれでよし。 のはず }; struct Charadata{//キャラクター構造体 public: int maxhp,hp; int maxmp,mp; int atk,def; int matk,mdef; int exp,lv; BAD_STATUS state; int yobi[6]; }; #endif
19 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 21:18:32.43 ID:9tdD8idFP
20 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 21:19:48.51 ID:U8SOcadY0
昼の続きか
で、unsing〜〜をCPPのみにくっつけ そのた訂正したら 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2143: 構文エラー : ';' が '<' の前にありません。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2238: ';' の前に無効なトークンがあります。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.cpp(5) : error C2065: 'hdata' : 定義されていない識別子です。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.cpp(5) : error C2228: '.clear' の左側はクラス、構造体、共用体でなければなりません 1> 型は ''unknown-type'' です。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.cpp(11) : error C2228: '.push_back' の左側はクラス、構造体、共用体でなければなりません 1> 型は ''unknown-type'' です。 1>main.cpp 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2143: 構文エラー : ';' が '<' の前にありません。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2238: ';' の前に無効なトークンがあります。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(8) : error C2039: 'hdata' : 'HERO' のメンバではありません。 1> c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(6) : 'HERO' の宣言を確認してください。 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(8) : error C2228: '.at' の左側はクラス、構造体、共用体でなければなりません 1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(8) : error C2065: 'hp' : 定義されていない識別子です。 main.cpp #include "hero.h" #include <iostream> using namespace std; int main(){ HERO henntai; henntai.init(); cout<<"",henntai.hdata.at(hp)<<endl; cout<< "uheheheh"<< endl; return 0; }
ちゃんとC++の文法勉強してこいと
23 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 21:25:54.09 ID:U8SOcadY0
.hでvectorつかってるとこはstdから指定しないとだけど データ複数もつの?hdate 日付じゃねぇっつーのってのはおいといて。
>>21 っstd::vector
using namespace std; はおまじないってタイプの入門書を読んだな?
なんつーか、いきなりゲームを作ろうという意欲は買うが もう少し基礎的なところからコツコツ積み重ねたほうがいいと思う hello worldくらいはさすがにやってるだろうけど
27 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 21:35:57.17 ID:U8SOcadY0
作法を自分がどこで覚えたか記憶にないけど たぶん本にでも書いてあると思うんだが
>>25 オーケー、じゃあそのおまじないの意味を教えてやろう
〜第1章 namespace とは〜
例えばおまいが、class Character を作りたいとする
だが偶然、おまいが使っていたライブラリに class Character があった場合に困る
尤もこの程度なら「じゃあ俺はCharacterじゃなくてCharaって名づけるわwww」で済むわけだが、
もし class Character が2つの別々のライブラリにあったりすると名前を変更できない
そういう時に、「ライブラリAの」Character/「ライブラリBの」Characterを区別できるように、
「」で括った部分を宣言する
これが名前空間で、namespace LibraryA { class Character; } のように書く
(第2章に続く)
〜第2章 namespace の使い方〜 namespace LibraryA { class Character { // 省略 }; } の Character を使用するためには、 LibraryA::Character chara1; のようにする。メンバ関数の定義と同じ感じだな 「::」は「スコープ演算子」と呼ばれて、:: 以降の識別名がどの識別名に属するかを指定する クラス Hoge 内の init() 関数なら Hoge::init() 、 名前空間 LibraryA の Character クラスなら LibraryA::Character 、といった具合にだ ただ、LibraryA:: を毎回わざわざ指定するのはあまりに面倒なので、 「名前空間 LibraryA の」を省略できるなら省略してかまわない、とすることができる これが「using namespace LibraryA;」の書式 なおこれをヘッダで使うなというのは、そのヘッダをインクルードした全てで using が有効になり、 何らかの理由で「LibraryA::」を省略したくない場合にも、それができなくなってしまうから (第3章に続く)
〜第3章 std 名前空間〜 さて、C++の入門書では、必ずといっていいほど最初に using namespace std; の一文がある。つまりそのソースでは、どこかで std 名前空間の中身を使ってるってことだ それを説明するには、まずこの奇妙な std が何を意味するのか説明したほうがいいだろう std=STandarD(標準) つまりこの std 名前空間は、標準ライブラリであることを示す 恐らく今の段階では、#include <hoge> の形式で指定するヘッダは全て標準ライブラリだろう ということは、このインクルードがなければ使えなかった識別名は、全てstd名前空間にある 例えば cout は std::cout だし、vector も std::vector using namespace std; をしていない場合は、これらを全部フルネームで書かなければいけない
>>31 それが面倒なら using namespace std;と
ただ、それをヘッダでやったらその後全部にかかって
>>「ライブラリAの」Character/「ライブラリBの」Characterを区別できるように
だからヘッダでVECTORつかいたければ
std::vector〜〜なんちゃかんちゃら〜〜
と
>>32 そういうこと
ヘッダの最後で unuse namespace std; みたいにできればいいんだができないからな
typedefじゃダメなの?
35 :
以下、名無しにかわりましてVIPがお送りします :2009/03/08(日) 22:02:50.22 ID:U8SOcadY0
これの目的なんだっけ? コンパイルエラーとるのが目的?
C#使ったほうがいいな C++は泥沼みたいだし
>>34 typedef はクラスにしか効かないのと、使う識別名ごとに宣言しなきゃならんからな
変数とか関数の場合も参照を使えば何とかならんこともないが
別にそれで問題ないなら、それでもいいと思うよ
あと typedef の弱点は、
template<class T> typedef std::vector<T> VECTOR<T>;
みたいなテンプレート化が許されていないこと
39 :
ハム速転載禁止 :
2009/03/08(日) 22:15:42.46 ID:bP5217zAI