プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
2012 | 04 |
2013 | 01 | 05 | 06 | 07 | 08 | 10 |
2014 | 02 | 03 | 05 | 09 |
2015 | 04 |
2016 | 09 | 11 | 12 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


2004-09-08 ココが厳しいよMinGW part4

studiokingyo2004-09-08

[][]ココが厳しいよMinGW part4 内部テンプレートクラスの宣言方法 ココが厳しいよMinGW part4 内部テンプレートクラスの宣言方法 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク ココが厳しいよMinGW part4 内部テンプレートクラスの宣言方法 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

さてさて、早速 何処が厳しいのかって?

以下のプログラムをどうぞ。


template<class T >
class gapbuffer : protected std::vector<T,std::allocator<T> >
{
public:
  typedef std::allocator<T> A;
  typedef gapbuffer<T> self_type;
#endif

  typedef std::vector<T,A> base_type;
  
  typedef typename base_type::size_type size_type;
  
  typedef typename base_type::value_type value_type;

  typedef typename base_type::reference reference;
  typedef typename base_type::const_reference const_reference;

  typedef typename base_type::pointer pointer;
  typedef typename base_type::const_pointer const_pointer;
  
  typedef typename base_type::iterator base_iterator;
  typedef typename base_type::const_iterator const_base_iterator;
private:
    //unsigned int -> size_type;
  size_type gb_, ge_;
  const size_type initGapSize_;
public:

  template<class T,typename Traits,typename Boss>
  class iterator_base : public std::random_access_iterator_tag {
  public:

    typedef T value_type;
    //typedef typename Traits::value_type value_type;
    typedef typename Traits::pointer    pointer;
    typedef typename Traits::reference  reference;

    typedef iterator_base<
      T, 
      policy::non_const_traits<T>
      ,Boss
    > iterator;
//以下略

さて、何処をミスっているのでしょう?私はまったくわかりません・・・。

しかし、どうも

  template<class T,typename Traits,typename Boss>

らへんがエラッているぞ!との警告が・・・。

ウーム。さて、どうする?

とりあえず、内部クラステンプレート引数Tを_Tに変えてみました。

そしたら無事にコンパイル通るじゃありませんか。ヽ(`Д´)ノムキィ

2004-09-06 ココが厳しいよMinGW part3

studiokingyo2004-09-06

[][]MinGWの不可解なエラーメッセージ解読集 MinGWの不可解なエラーメッセージ解読集 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク MinGWの不可解なエラーメッセージ解読集 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

"parse error at end of input"

{ } の個数が合わない。

例:

namespace boost{

#if 0

}//end of namespace

#endif


"warning: no newline at end of file"

気にしなくてイイらしい。


[]MinGW( gcc系 )の今回参考にしたサイトリンク集 MinGW( gcc系 )の今回参考にしたサイトのリンク集 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク MinGW( gcc系 )の今回参考にしたサイトのリンク集 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

http://www.miyagi-ct.ac.jp/ee/lecture/E3_01/Error_messages.html

http://homepage3.nifty.com/mmgames/c_guide/gcc.html

gccのエラーメッセージ日本語化・・・、ちょっと古い?(実はあんま読んでない)

http://method.jp/~t2/t2grad/1993-gcc.pdf

gccは暗黙のキャストを何で警告しないんだ?ヽ(`ε´)ノ ブーブー!!  というお話

http://d.hatena.ne.jp/yupo5656/20040830#p2

2004-09-05 ココが厳しいよMinGW part2

studiokingyo2004-09-05

[][][]ここがきびC MinGW part2 左のtemplate引数を右のtemplate引数に渡せない! ここがきびC MinGW part2 左のtemplate引数を右のtemplate引数に渡せない! - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク ここがきびC MinGW part2 左のtemplate引数を右のtemplate引数に渡せない! - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

さて、タイトルどおりなのですが、

どうだろうか、以下のコードはMinGWに通らない。

何故?何故?


template<class K,class V,class MAP_TYPE=std::map<K,V> >
struct map_ex : public map_ex_adapter<MAP_TYPE>{
  typedef map_ex<K,V,MAP_TYPE> self_type;
  typedef map_ex_adapter<MAP_TYPE> base_type ;
  typedef MAP_TYPE CONTAINER_TYPE;
  typedef typename base_type::DATA_TYPE DATA_TYPE;
  typedef typename base_type::RESULT RESULT;
  //typedef std::pair<bool,void *> GET_DATA;
  typedef typename base_type::iterator iterator;
  typedef typename base_type::const_iterator const_iterator;
  typedef typename base_type::reverse_iterator reverse_iterator;
  typedef typename base_type::const_reverse_iterator const_reverse_iterator;
  /// キーの型 
  typedef typename base_type::key_type key_type;
  ///データの型 
  typedef typename base_type::mapped_type mapped_type;
  /// キーとデータのペア 
  typedef typename base_type::value_type value_type;

  //コンストラクタとかなくても大丈夫だよね・・・。(謎

};

とりあえず、キモはココだ。


template<class K,class V,class MAP_TYPE=std::map<K,V> >
struct map_ex : public map_ex_adapter<MAP_TYPE>{

しかし、この中身コンテナとっかえひっかえのデフォルトの指定だけはVCユーザーとして譲れないのである。

やっぱりマイナーなifdefに頼るしかなさそうで。゜(゜´Д`゜)゜。

#ifdef _MSC_VER
template<class K,class V,class MAP_TYPE=std::map<K,V> >
struct map_ex : public map_ex_adapter<MAP_TYPE>{
  //typedef std::map<K,V> MAP_TYPE;
  typedef map_ex<K,V,MAP_TYPE> self_type;
#else
template<class K,class V>
struct map_ex : public map_ex_adapter<std::map<K,V> >{
  typedef std::map<K,V> MAP_TYPE;
   typedef map_ex<K,V> self_type;
#endif


  typedef map_ex_adapter<MAP_TYPE> base_type ;

  typedef MAP_TYPE CONTAINER_TYPE;


  typedef typename base_type::DATA_TYPE DATA_TYPE;
  typedef typename base_type::RESULT RESULT;
  //typedef std::pair<bool,void *> GET_DATA;
  typedef typename base_type::iterator iterator;
  typedef typename base_type::const_iterator const_iterator;
  typedef typename base_type::reverse_iterator reverse_iterator;
  typedef typename base_type::const_reverse_iterator const_reverse_iterator;
  /// キーの型 
  typedef typename base_type::key_type key_type;
  ///データの型 
  typedef typename base_type::mapped_type mapped_type;
  /// キーとデータのペア 
  typedef typename base_type::value_type value_type;

  //コンストラクタとかなくても大丈夫だよね・・・。(謎

};

こうすると、IDE側がクラス参照ツリーとか作るとき上手く生成してくれないんだよねぇ〜。(´Д⊂グスン

何か上手い方法求む m(_ _)m

2004-09-04 ココが厳しいよMinGW

studiokingyo2004-09-04

Eclipse自分用環境設定マニュアルは移動しました。

d:id:studiokingyo:00010000

[][]ここが厳しいよMinGW typename はどう付けるの? ここが厳しいよMinGW typename はどう付けるの? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク ここが厳しいよMinGW typename はどう付けるの? - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

どうも^^dです。

さて、開発環境を少しMinGWに移したわけですが・・・、何かと今まで作っていたライブラリdkutilの移植作業が難しい。

以下のようなクラスでのお話。

template<class MAP_T>
class map_ex_adapter : public MAP_T{
public:
  typedef MAP_T base_type;
  typedef map_ex_adapter<base_type> self_type;

  /// キーの型 
  typedef typename base_type::key_type key_type;
  ///データの型 
  typedef typename base_type::mapped_type mapped_type;
  /// キーとデータのペア 
  typedef typename base_type::value_type value_type;
  /// キーを比較するファンクションオブジェクト 
  typedef typename base_type::key_compare key_compare;
  ///allocator type
  typedef typename base_type::allocator_type allocator_type;

  ///value_typeのkey_typeが非const版
  typedef std::pair<key_type,mapped_type> DATA_TYPE;

  typedef std::pair<base_type::iterator,bool> RESULT;
  //typedef std::pair<bool,void *> GET_DATA;
  typedef typename base_type::iterator iterator;
  typedef typename base_type::const_iterator const_iterator;
  typedef typename base_type::reverse_iterator reverse_iterator;
  typedef typename base_type::const_reverse_iterator const_reverse_iterator;
public:


しっかりとエラーを吐いてくれるのだ。

to

in

parse

At

と、訳のわからないものをだ・・・。*1

さて、何処が間違っているだろうか?分かった人はやっぱり凄いですねぇ〜と、私は思っちゃいます。

今まで、クラス内のものをtypedef する時はそのまんまtypedefだった。

しかし、前前からtypenameをつけようつけようと思いつつ、つけていなかった。

事実、何処でつければいいのか分からなかった。

で、参考になったサイト カレー温泉

http://ray.sakura.ne.jp/

http://ray.sakura.ne.jp/template/typename.html

これによると、クラス内にある型をtypedefする時、宣言するときはtypenameをつけなさいとの事。(VCではテンプレートクラスでないクラスにtypedefする時typenameをつけると怒られるらしい)

そうだったんだ〜。

へーへーへぇ*2


で、間違っているところは??

あ〜、なーるねぇ。

 typedef std::pair< base_type::iterator,bool> RESULT;

*1:実はDev-C++がエラー文字列のパースをミスって要るだけ^^;

*2:でも、POD(C言語でも使える型)の時 しか?typename は使っていなかったような〜。

Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー