私用でしばらく来れないので、解決チェックをつけておきます。
また暇があるときにいただいた回答を参考にして考えさせてもらいますm(_ _)m
検索結果 10 件
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: あるクラスを継承しているtemplate
- 返信数: 5
- 閲覧数: 3282
Re: あるクラスを継承しているtemplate
返信くださったお二人方ありがとうございます! ええと、考えていた状況としては、 vector<Enemy>をもつEnemyManagerとvector<Shot>を持つShotManagerを共用できたらいいなと考えていたんですが、(EnemyとShotはObjから継承) やっぱり個別に作ったほうがいいですかね…? h2so5 さん、 テンプレート型の制約を追加する場合はキャストを使ってください。 とは、tk-xleader さんのおっしゃていることでしょうか? tk-xleader さん、 わざわざ書いてくれてありがとうございます。けっこう長くて難しいですね…理解できないところがいくつかあり...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: あるクラスを継承しているtemplate
- 返信数: 5
- 閲覧数: 3282
Re: あるクラスを継承しているtemplate
あ、一応追記しておきますが、このコードで動くのか、ということではなく、template宣言とかを変えて、こういうことができるようにできるか、という質問です。
CBaseのポインタをもって、そこにキャストすれば同じようなことができるのはわかりますが、この場合はよくてもvector<T>とかを持たせたいときに面倒なことになると思うのです。
なにか解決方法があればよろしくお願いします。
CBaseのポインタをもって、そこにキャストすれば同じようなことができるのはわかりますが、この場合はよくてもvector<T>とかを持たせたいときに面倒なことになると思うのです。
なにか解決方法があればよろしくお願いします。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: あるクラスを継承しているtemplate
- 返信数: 5
- 閲覧数: 3282
あるクラスを継承しているtemplate
初歩的な質問です。 templateで、それがあるクラスを継承しているようにできるでしょうか。 たとえば、 class CBase{ public: void basefunc(); }; class CDerived1 : public CBase{ }; class CDerived2 : public CBase{ }; template<class T>; class Hoge{ T t; void func(){t.basefunc();}//TがCBaseを継承していることが決まっていればできる? }; 今入門書が手元になく、またググってもよくわからなかったので質問させていただきま...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: [C++]別ファイルでクラスが未定義だといわれる
- 返信数: 13
- 閲覧数: 8768
Re: [C++]別ファイルでクラスが未定義だといわれる
define.hはgraphic.hからincludeされているため、#pragma onceの効果で読まれないと思います。[/quote]
なるほど、つまり、#pragma once のせいで読み込まれる順番が違ってしまった,という感じですね。
大体わかりました、ありがとうございます!
こんなに親切な回答をありがとうございました、とても助かりましたm(_ _)m
自分もc++がわかるようになってきたらいつかこの掲示板に恩返しをしたいと思いますw
では、解決チェックをつけておきます。
なるほど、つまり、#pragma once のせいで読み込まれる順番が違ってしまった,という感じですね。
大体わかりました、ありがとうございます!
こんなに親切な回答をありがとうございました、とても助かりましたm(_ _)m
自分もc++がわかるようになってきたらいつかこの掲示板に恩返しをしたいと思いますw
では、解決チェックをつけておきます。
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: [C++]別ファイルでクラスが未定義だといわれる
- 返信数: 13
- 閲覧数: 8768
Re: [C++]別ファイルでクラスが未定義だといわれる
なるほど!そんなことがあるんですかみけCAT さんが書きました:define.h内でincludeしているobj.hで、GrSetSetの定義より前にObjクラスの定義が来るからだと思います。
しかしdefine.hでobj.hをincludeしたとき、obj.hの先頭の#include"graphic.h"は読まれないんですか?
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: [C++]別ファイルでクラスが未定義だといわれる
- 返信数: 13
- 閲覧数: 8768
Re: [C++]別ファイルでクラスが未定義だといわれる
またもや連投すいません main内で、obj.hとgraphic.hの内容を使ってみても、エラーは出ませんでした。 やはり循環参照をいうやつなんでしょうか?#pragma once していれば大丈夫だとおもっていたんですが… 各ファイルの#include 部分を書いておきます。 //ヘッダ================================================================================= obj.h #pragma once #include "graphic.h" #include <cmath> #include "DxLib....
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: [C++]別ファイルでクラスが未定義だといわれる
- 返信数: 13
- 閲覧数: 8768
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: [C++]別ファイルでクラスが未定義だといわれる
- 返信数: 13
- 閲覧数: 8768
Re: [C++]別ファイルでクラスが未定義だといわれる
usaoさんのご指摘で気づいたのですが、コードを張り付け間違えてました。。。わかりにくいことになってしまってすいません。。。 上で//graphic.hと書いてある部分は//graphic.cppです。 //本当のgraphic.h #pragma once #include<vector> #include <string> #include <map> #include "define.h" static int dummygr; void makedummy(); class GrSet{//必要があれば回転とサイズを実装 std::vector<int> img; std::vecto...
- 11年前
- フォーラム: C言語何でも質問掲示板
- トピック: [C++]別ファイルでクラスが未定義だといわれる
- 返信数: 13
- 閲覧数: 8768
Re: [C++]別ファイルでクラスが未定義だといわれる
あれはエラーが起きてからこれで治らないかと適当にぶち込んだものでしたwみけCAT さんが書きました:Graphicクラスの定義が見つからないのでそれが通るのかはわかりませんが、
クラスを前方宣言だけでいいのは、そのクラスのポインタや参照を使うときだけだという気がします。
ポインタ→どんな型のポインタでも、あるシステムでのポインタのサイズは一定(例:4バイト)
クラスそのもののデータ→もちろんその構造によってサイズが変わる