- C++相談室 part114
364 :デフォルトの名無しさん[sage]:2014/10/20(月) 00:04:16.14 ID:YIaZ+UJI - テンプレートで質問なのですが、
#include <vector> #include <string> #include <iostream> using namespace std; void func_vect(const vector<string> &vstr){ // do something } void func_int(const int i){ // do something } template<typename T> void func(T arg){ if (argがvector<string>なら) func_vect(arg); else if (argがintなら) func_int(arg); } void main(){ vector<string> v = {"123","456","789"}; func(v); int i = 123; func(i); } こんな処理はできますか? 実際に試したら、vector<string> か int かに限定しないと、ビルド出来ませんでした。
|
- C++相談室 part114
368 :デフォルトの名無しさん[sage]:2014/10/20(月) 00:34:43.39 ID:YIaZ+UJI - みなさんレスありがとうございました。
>>365 実際はTの種類が10個くらいあり、 template関数func()もかなりの行数なので、 できればtemplate関数一個でスッキリ書きたいのですが。 >>366 特殊化というのを調べてみます。 >>367 >テンプレートじゃなくて boost::anyあたりに入れないとな テンプレートでは、実現不可能でしょうか?
|
- Win32API質問箱 Build118
648 :デフォルトの名無しさん[sage]:2014/10/20(月) 16:15:30.31 ID:YIaZ+UJI - >>647
情報ありがとうございました。大変参考になります。 早速試してみましたら、動いたのですが、 C++初心者の私には、 SetMultiSzとQueryMultiSzの引数の与え方が分りませんでした。
|
- 【初心者歓迎】C/C++室 Ver.93【環境依存OK】
116 :デフォルトの名無しさん[sage]:2014/10/20(月) 22:23:16.91 ID:YIaZ+UJI - たとえばMyClass.hが物凄く長くなったので分割したい場合、
--- MyClass.h --- class MyClass{ public: int a; // ...その他の定義がたくさん private: int b; // ...その他の定義がたくさん }; ----------------- を、 --- MyClass.h --- class MyClass{ #include "public.h" #include "private.h }; -- public.h -- public: int a; // ... -- private.h -- private: int b; // ... のように、分割したのですが、おかしいですか? もっとお勧めの方法があれば教えてください。
|
- 【初心者歓迎】C/C++室 Ver.93【環境依存OK】
118 :デフォルトの名無しさん[sage]:2014/10/20(月) 22:35:22.05 ID:YIaZ+UJI - >>117
レスありがとうございます。 MyClassの設計は別問題として、最初に示した例のように分割したファイルを #include 文で読み込む方法は、一般的なやり方かどうかを教えてください。
|
- 【初心者歓迎】C/C++室 Ver.93【環境依存OK】
120 :デフォルトの名無しさん[sage]:2014/10/20(月) 23:16:44.85 ID:YIaZ+UJI - >>119
ググっても良い例が見つからないのですが、どこかお勧めのサイト ありませんか?
|