ahco_i-oのプロフィール

@ahco_i-o ahco_i-o
ありがとう数20
質問数8
回答数2
ベストアンサー数
0
ベストアンサー率
0%
お礼率
71%

  • 登録日2009/06/02
  • C++言語の課題です

    C++言語の課題です 4つの数字をキーボードから入力させ、入力が終わったら、その最大値を表示するプログラムを作成しなさい という問題が出ました。 4つの数字を入力して 読み込むまではわかりましたが 条件分岐のところから わからなくなりました。 使ってる文法は printf scanf if elseif などです どなたか教えて下さい

  • テンプレート関数でコンパイルが通りません

    テンプレート関数でコンパイルが通りません いつもお世話になってます。テンプレート関数XXXで、引数のTYPE型によって、XXX内で呼び出す関数が変わります。以下の例では、eTypeがAならSetADataを呼び、eTypeがBならSetBDataを呼び出します。XXXのもうひとつの引数がテンプレート部です。本当は、rInfoの型(AInfoまたはBInfo)を判別できればeTypeは不要なのですが、判別の仕方がわからないので、eTypeでrInfoの型を伝えるようにしています。 template<typename T> int XXX( T& rInfo, const TYPE& eType ) if( eType == A ){   SetAData( rInfo ); else if( eType == B ){   SetBData( rInfo ); } // 明示的インスタンス生成 template int XXX<AInfo>( AInfo& rInfo, const TYPE& eType ) template int XXX<BInfo>( Binfo& rInfo, const TYPE& eType ) 上記のようにした時、コンパイラはTの部分をAInfoとBInfoの両方で解釈するので、どうしても以下のようなコンパイルエラーが出ます。 --- `int XXX(T&, const TYPE&) [with T = AInfo]': error: no matching function for call to `SetBData(AInfo&)' note: candidates are: int SetBData(BInfo&) `int XXX(T&, const TYPE&) [with T = BInfo]': error: no matching function for call to `SetAData(BInfo&)' note: candidates are: int SetAData(AInfo&) XXXをテンプレート関数でなく、明示的にAInfoとBInfoのオーバーロードにする手もあるかもしれませんが、XXXの中で、ここには載せていない大多数の部分は、まったく同じなので、テンプレート関数にするのが筋かなと思っています。このコンパイルが通るようにするには、どうすれはよいのでしょうか。