C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part143
https://mevius.5ch.net/test/read.cgi/tech/1560574313/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
探検
C++相談室 part144
レス数が1000を超えています。これ以上書き込みはできません。
2019/07/22(月) 13:18:35.52ID:gptRHpgT
917デフォルトの名無しさん
2019/09/09(月) 13:14:59.70ID:By40c52C >>901
pythonのPyObjectのコード観てみ
pythonのPyObjectのコード観てみ
918デフォルトの名無しさん
2019/09/09(月) 13:38:51.72ID:BaqZzWRe919デフォルトの名無しさん
2019/09/09(月) 13:41:26.48ID:FLVXg6p/ tk > wxWidgets > Qt > electron
920デフォルトの名無しさん
2019/09/09(月) 14:33:07.01ID:dQ/pGf2B stringstreamで
std::stringstream ss;
ss << value;
std::string str = ss.str();
こんな感じで数値を文字列に変換すると、valueが3桁以上だった場合
12,000みたいな感じで勝手にカンマがついてしまうんだけど
カンマがつかないフォーマットで出力する方法を教えてください
std::stringstream ss;
ss << value;
std::string str = ss.str();
こんな感じで数値を文字列に変換すると、valueが3桁以上だった場合
12,000みたいな感じで勝手にカンマがついてしまうんだけど
カンマがつかないフォーマットで出力する方法を教えてください
921デフォルトの名無しさん
2019/09/09(月) 14:53:29.86ID:KKylx/uA なんかロケールがアレなんじゃ
922デフォルトの名無しさん
2019/09/09(月) 15:32:31.63ID:qT2kJ6NO 普通、コンマは付かんだろ
https://ideone.com/L7hohk
https://ideone.com/L7hohk
923デフォルトの名無しさん
2019/09/09(月) 15:38:54.81ID:pmQvKTaB もしかして。 っ浮動小数点のドット
924デフォルトの名無しさん
2019/09/09(月) 16:22:41.31ID:XEtSQUcF ss.imbue(std::locale("C"));
でもしてみりゃいいんじゃね
でもしてみりゃいいんじゃね
925デフォルトの名無しさん
2019/09/09(月) 17:01:25.39ID:dQ/pGf2B ロケールの設定が原因でした
wstringで日本語を扱いたくて
std::locale::global( std::locale( "japanese" ) );
std::setlocale( LC_ALL, "japanese" );
ってやるとstringstreamでカンマが付くなんて知らなかった
wstringで日本語を扱いたくて
std::locale::global( std::locale( "japanese" ) );
std::setlocale( LC_ALL, "japanese" );
ってやるとstringstreamでカンマが付くなんて知らなかった
926デフォルトの名無しさん
2019/09/09(月) 17:05:42.93ID:L8mIN3PD std::list<int> l = { 7, 5, 16, 8 };
とすると、 l というリスト右辺で指定した要素で初期化した状態で作成されますが、
このときの std::list 自体の実装方法が知りたいです。
最新の C++ の方法論(?)によれば、右辺がコンパイラによって initiailer_list に
なって、list のコンストラクタにそれが仮引数の型として宣言してあるものがあって、
そこで処理しているのかと思い、確認のため、
http://cs.brown.edu/people/jwicks/libstdc++/html_user/stl__list_8h-source.html
↑
で、std::list のソースを見てみると、initiailer_list というキーワードが見つかりません。
ではいったいどういう仕組みで初期化しているのでしょうか。
operator=() は見つかります。
とすると、 l というリスト右辺で指定した要素で初期化した状態で作成されますが、
このときの std::list 自体の実装方法が知りたいです。
最新の C++ の方法論(?)によれば、右辺がコンパイラによって initiailer_list に
なって、list のコンストラクタにそれが仮引数の型として宣言してあるものがあって、
そこで処理しているのかと思い、確認のため、
http://cs.brown.edu/people/jwicks/libstdc++/html_user/stl__list_8h-source.html
↑
で、std::list のソースを見てみると、initiailer_list というキーワードが見つかりません。
ではいったいどういう仕組みで初期化しているのでしょうか。
operator=() は見つかります。
927デフォルトの名無しさん
2019/09/09(月) 17:07:18.30ID:G9jMTORL >>926
誤:とすると、 l というリスト右辺で指定した要素で初期化した状態で作成されますが、
正:とすると、 l というリストが右辺で指定した要素で初期化した状態で作成されますが、
誤:initiailer_list
正:initializer_list
誤:とすると、 l というリスト右辺で指定した要素で初期化した状態で作成されますが、
正:とすると、 l というリストが右辺で指定した要素で初期化した状態で作成されますが、
誤:initiailer_list
正:initializer_list
928デフォルトの名無しさん
2019/09/09(月) 17:12:55.99ID:MF4WMKe5 <list> を見よう
929デフォルトの名無しさん
2019/09/09(月) 17:20:40.83ID:MF4WMKe5 >>926
一応マジレスしておくと、そのサイトの一番下を見よう
> Generated on Fri May 6 01:09:09 2005 for libstdc++-v3
initializer_listが導入されたのはC++11だからね
一応マジレスしておくと、そのサイトの一番下を見よう
> Generated on Fri May 6 01:09:09 2005 for libstdc++-v3
initializer_listが導入されたのはC++11だからね
930デフォルトの名無しさん
2019/09/09(月) 17:28:46.68ID:pmQvKTaB stl_list.hなんてコードは標準にはありません。
リンクドリストのよくあると思われる実装は、
struct node{
node* next=nullptr;
node* prev=nullptr;
T value();
}
という構造体の操作等をクラス化したモノ。
なので、インデックサが無いはずである。
リンクドリストのよくあると思われる実装は、
struct node{
node* next=nullptr;
node* prev=nullptr;
T value();
}
という構造体の操作等をクラス化したモノ。
なので、インデックサが無いはずである。
931デフォルトの名無しさん
2019/09/09(月) 17:32:18.21ID:pmQvKTaB あ、蛇足だった。。。
932デフォルトの名無しさん
2019/09/09(月) 18:26:49.77ID:L8mIN3PD VC2019 の list ヘッダではちゃんと見つかりました。
みなさんありがとうございました。
みなさんありがとうございました。
933デフォルトの名無しさん
2019/09/09(月) 18:33:38.13ID:G9jMTORL また質問させてください。
VS2019 の tuple の実装を調べていて、utility というヘッダファイルに以下の
ようなコードを見つけました。自分の直感では、これは、パターンマッチングを
していると思うんですが、実は、以下の (1) にマッチングする場合、
(2) にもマッチングする場合があります。しかし、現実には (1) にマッチングする
場合には、コンパイラは (2) を無視して (1) だけを採用する必要があると
思うんですが、template には、マッチングに優先順位があって、定義した
順にマッチングするかを調べて、一番最初にマッチングしたものを採用して
それ以後のものは無視すると言うような規則があるのでしょうか?
// (1)
template <class _This, class... _Rest>
struct _Tuple_element<_This, tuple<_This, _Rest...>> { // select first element
using _Check_type = int;
static_assert(
is_void_v<typename _Tuple_element<_This, tuple<_Rest...>>::_Check_type>, "duplicate type T in get<T>(tuple)");
using type = _This;
using _Ttype = tuple<_This, _Rest...>;
};
// (2)
template <class _Ty, class _This, class... _Rest>
struct _Tuple_element<_Ty, tuple<_This, _Rest...>>
: _Tuple_element<_Ty, tuple<_Rest...>> { // recursive _Tuple_element definition
};
VS2019 の tuple の実装を調べていて、utility というヘッダファイルに以下の
ようなコードを見つけました。自分の直感では、これは、パターンマッチングを
していると思うんですが、実は、以下の (1) にマッチングする場合、
(2) にもマッチングする場合があります。しかし、現実には (1) にマッチングする
場合には、コンパイラは (2) を無視して (1) だけを採用する必要があると
思うんですが、template には、マッチングに優先順位があって、定義した
順にマッチングするかを調べて、一番最初にマッチングしたものを採用して
それ以後のものは無視すると言うような規則があるのでしょうか?
// (1)
template <class _This, class... _Rest>
struct _Tuple_element<_This, tuple<_This, _Rest...>> { // select first element
using _Check_type = int;
static_assert(
is_void_v<typename _Tuple_element<_This, tuple<_Rest...>>::_Check_type>, "duplicate type T in get<T>(tuple)");
using type = _This;
using _Ttype = tuple<_This, _Rest...>;
};
// (2)
template <class _Ty, class _This, class... _Rest>
struct _Tuple_element<_Ty, tuple<_This, _Rest...>>
: _Tuple_element<_Ty, tuple<_Rest...>> { // recursive _Tuple_element definition
};
934デフォルトの名無しさん
2019/09/09(月) 19:26:19.32ID:L8mIN3PD >>933
なお、_Tuple_element は、
tuple tpl;
に対し、get<番号>(tpl) としたときに呼び出される以下のコードから使われます。
結論的には、template を書いた順序ではなく、パターンマッチングおける強弱のような
もので優先順位が決まっているようです。それは丁度、同じ名前に仮引数の型だけが
異なる複数の関数 が overload 定義されている場合に、どの関数が呼び出されるかを
決めるときのアルゴリズムに似ているようです。詳しくは分かりません。
// FUNCTION TEMPLATE get (by type)
template <class _Ty,
class... _Types>
_NODISCARD constexpr _Ty& get(tuple<_Types...>& _Tuple) noexcept { // get reference to _Ty element of tuple
using _Ttype = typename _Tuple_element<_Ty, tuple<_Types...>>::_Ttype;
return ((_Ttype&) _Tuple)._Myfirst._Val;
}
なお、_Tuple_element は、
tuple tpl;
に対し、get<番号>(tpl) としたときに呼び出される以下のコードから使われます。
結論的には、template を書いた順序ではなく、パターンマッチングおける強弱のような
もので優先順位が決まっているようです。それは丁度、同じ名前に仮引数の型だけが
異なる複数の関数 が overload 定義されている場合に、どの関数が呼び出されるかを
決めるときのアルゴリズムに似ているようです。詳しくは分かりません。
// FUNCTION TEMPLATE get (by type)
template <class _Ty,
class... _Types>
_NODISCARD constexpr _Ty& get(tuple<_Types...>& _Tuple) noexcept { // get reference to _Ty element of tuple
using _Ttype = typename _Tuple_element<_Ty, tuple<_Types...>>::_Ttype;
return ((_Ttype&) _Tuple)._Myfirst._Val;
}
935デフォルトの名無しさん
2019/09/09(月) 19:28:45.47ID:G9jMTORL936デフォルトの名無しさん
2019/09/09(月) 21:43:26.98ID:jbm+gpsV937デフォルトの名無しさん
2019/09/10(火) 01:40:29.13ID:wmYy4ZD0 >>934
ちなみに、C++ における tuple とは、異なる型のオブジェクトの集合体のような
もので、get<idx>(tpl) とすると idx 番目の要素が参照できます。
動的配列 vector、リンクリスト list は同じ型の集合体ですが、tupleは
char, int, string 任意の順番で任意個数入れたりするようなことが可能です。
tuple は class を次々に継承することで実現され、N個の要素の場合は、
(N - 1) 回継承されて実現されています。
get<idx>(tpl) は、コンパイル段階で静的に型が決まるようになっており、
idx を 1 ずつ減らしながら idxが0 になるまでtemplateを再帰的に具現化(展開)し
て行っています。その際、基本クラスへの「cast」を利用して上手く実装されています。
get<TYPE>(tpl) は、その TYPE 版で、tuple の中の TYPE 型の要素を取り出すもので、
TYPEの要素が一個だけであることを仮定しています。
>>934 の
using _Ttype = typename _Tuple_element<_Ty, tuple<_Types...>>::_Ttype;
return ((_Ttype&) _Tuple)._Myfirst._Val;
の部分は、丁度 TYPE = _Ty の場合のもので _Tuple_element<_Ty, tuple<_Types...>>
の部分が、再帰的に template 具現化を使って _Ty の型の要素が先頭になるまで
tuple の要素を減らす処理を行っており、_Ttype には、その tuple の型が入ります。
次の return 文は、cast を行っている部分です。
>>933 の(2)は、再帰的に tuple の先頭の要素を除去して行くマクロで、(1)は、
tuple の先頭が _Type になった場合にマクロ展開の動作を停止するためのものです。
ちなみに、C++ における tuple とは、異なる型のオブジェクトの集合体のような
もので、get<idx>(tpl) とすると idx 番目の要素が参照できます。
動的配列 vector、リンクリスト list は同じ型の集合体ですが、tupleは
char, int, string 任意の順番で任意個数入れたりするようなことが可能です。
tuple は class を次々に継承することで実現され、N個の要素の場合は、
(N - 1) 回継承されて実現されています。
get<idx>(tpl) は、コンパイル段階で静的に型が決まるようになっており、
idx を 1 ずつ減らしながら idxが0 になるまでtemplateを再帰的に具現化(展開)し
て行っています。その際、基本クラスへの「cast」を利用して上手く実装されています。
get<TYPE>(tpl) は、その TYPE 版で、tuple の中の TYPE 型の要素を取り出すもので、
TYPEの要素が一個だけであることを仮定しています。
>>934 の
using _Ttype = typename _Tuple_element<_Ty, tuple<_Types...>>::_Ttype;
return ((_Ttype&) _Tuple)._Myfirst._Val;
の部分は、丁度 TYPE = _Ty の場合のもので _Tuple_element<_Ty, tuple<_Types...>>
の部分が、再帰的に template 具現化を使って _Ty の型の要素が先頭になるまで
tuple の要素を減らす処理を行っており、_Ttype には、その tuple の型が入ります。
次の return 文は、cast を行っている部分です。
>>933 の(2)は、再帰的に tuple の先頭の要素を除去して行くマクロで、(1)は、
tuple の先頭が _Type になった場合にマクロ展開の動作を停止するためのものです。
938デフォルトの名無しさん
2019/09/10(火) 08:37:19.66ID:rSLGtoNV recursive _Tuple_element definition って書いてあるから
>>933の(1)(2)併せてtupleのバッカス・ナウア記法
>>933の(1)(2)併せてtupleのバッカス・ナウア記法
939デフォルトの名無しさん
2019/09/10(火) 12:01:32.29ID:wmYy4ZD0940デフォルトの名無しさん
2019/09/10(火) 17:10:53.21ID:BQ4j7tjI C#には文字列で指定したメソッドを呼び出す方法がありますが、
C++ではそういった事をしたい場合、どういった方法があるのでしょうか?
C++ではそういった事をしたい場合、どういった方法があるのでしょうか?
941デフォルトの名無しさん
2019/09/10(火) 17:15:02.60ID:lKNyd4my なんかこのスレだけ(っていうか特定のレスだけ?)貼られてるソースのフォントが微妙に違う気がするんだが気のせい?
942デフォルトの名無しさん
2019/09/10(火) 17:15:39.36ID:H3vpu58u 関数ポインタ返せばいいんじゃね
943デフォルトの名無しさん
2019/09/10(火) 17:15:56.86ID:H3vpu58u944デフォルトの名無しさん
2019/09/10(火) 17:16:04.51ID:EA1WacFe >>940
最近他のスレで同じ質問を観たけどマルチ?
最近他のスレで同じ質問を観たけどマルチ?
945デフォルトの名無しさん
2019/09/10(火) 17:16:07.43ID:cOE65+EF mapファイルからシンボル探して関数呼ぶとか。
946デフォルトの名無しさん
2019/09/10(火) 17:58:56.15ID:4IK1yyiH >>941
専ブラ使ってるならAA表示をオフれ
専ブラ使ってるならAA表示をオフれ
947デフォルトの名無しさん
2019/09/10(火) 18:30:27.12ID:/IdzRyhX mapに入れるにしても呼び出す関数の引数戻り値の型が一致してる必要があるくね
948デフォルトの名無しさん
2019/09/10(火) 18:36:26.12ID:lKNyd4my949デフォルトの名無しさん
2019/09/10(火) 21:34:14.67ID:ihR0gUx6950デフォルトの名無しさん
2019/09/10(火) 21:51:01.01ID:ER41jhKS C++は名前と引数が同じで戻り値が違うくらいでは別物として扱ってくれない。
ドットネットだと大丈夫だった気がする。
ドットネットだと大丈夫だった気がする。
951デフォルトの名無しさん
2019/09/10(火) 21:57:04.55ID:7WGaos5g 嘘つけ
952デフォルトの名無しさん
2019/09/10(火) 22:21:19.85ID:ER41jhKS953デフォルトの名無しさん
2019/09/10(火) 22:21:47.33ID:ER41jhKS >>951
うろ覚えだから、間違ってたらそーりー。
うろ覚えだから、間違ってたらそーりー。
954デフォルトの名無しさん
2019/09/10(火) 22:26:46.90ID:DP4nYdpK んなめんどいことせんでも関数2つぐらい作って関数ポインタの配列に入れりゃいいだけだろ
955デフォルトの名無しさん
2019/09/10(火) 22:28:02.41ID:ER41jhKS >>954
後学のために、コードみたいわ〜。
後学のために、コードみたいわ〜。
956デフォルトの名無しさん
2019/09/11(水) 00:05:28.08ID:NNlDJcv1 >>944
俺が見たのは、文字列からクラスのインスタンス作りたいだったから微妙に違う
俺が見たのは、文字列からクラスのインスタンス作りたいだったから微妙に違う
957デフォルトの名無しさん
2019/09/11(水) 00:34:09.53ID:jCX5Zmm7 まあそれ用のレイヤ噛ますのが素直だよね
.netみたいなのがあればそれでいいし、CのGLibみたいなのもちょっと無理を感じなくもないがアリ
.netみたいなのがあればそれでいいし、CのGLibみたいなのもちょっと無理を感じなくもないがアリ
958デフォルトの名無しさん
2019/09/11(水) 01:04:41.71ID:Au6CJXG/959デフォルトの名無しさん
2019/09/11(水) 01:17:18.25ID:xNhcwpCp 戻り値だけ違う関数を作りたきゃテンプレートを使え
以上
以上
960デフォルトの名無しさん
2019/09/11(水) 01:57:43.22ID:TkJgDVYV TypeHolderTypeがほしい。
リフレクションは23で入るそうな。
リフレクションは23で入るそうな。
961デフォルトの名無しさん
2019/09/11(水) 07:00:09.68ID:KrQUVjgm >>952
AからRを推定させたいっていことか?
AからRを推定させたいっていことか?
962デフォルトの名無しさん
2019/09/11(水) 08:37:00.29ID:BcUfEF7y リフレクションどうやって実装するんだろう・・
現行のC/C++とリンカの仕様と互換性たもったまま実装するのかなり難しそうだけど
現行のC/C++とリンカの仕様と互換性たもったまま実装するのかなり難しそうだけど
963デフォルトの名無しさん
2019/09/11(水) 10:13:16.97ID:px+Xr7os C++に不可能は無い
964デフォルトの名無しさん
2019/09/11(水) 10:17:36.03ID:4wA+sXag965デフォルトの名無しさん
2019/09/11(水) 11:21:58.81ID:9WrJeA7f structured bindingで定義した変数をラムダ式でキャプチャするとclang7はエラー、gcc7は通る。
いずれもc++17指定。
使用上正しいのはどっち?
const auto [a,b]=std::make_tuple(1.0,0.0);
auto f=[&](){
return a+b;
};
いずれもc++17指定。
使用上正しいのはどっち?
const auto [a,b]=std::make_tuple(1.0,0.0);
auto f=[&](){
return a+b;
};
966デフォルトの名無しさん
2019/09/11(水) 11:39:01.09ID:KrQUVjgm >>965
clangが正しい
N4713 8.5.4.2 Capturesの段落8にこう書いてある
If a lambda-expression explicitly captures an entity that is not odr-usable or captures a structured binding (explicitly or implicitly), the program is
ill-formed.
clangが正しい
N4713 8.5.4.2 Capturesの段落8にこう書いてある
If a lambda-expression explicitly captures an entity that is not odr-usable or captures a structured binding (explicitly or implicitly), the program is
ill-formed.
967デフォルトの名無しさん
2019/09/11(水) 11:49:32.96ID:9WrJeA7f968デフォルトの名無しさん
2019/09/11(水) 12:07:20.16ID:KrQUVjgm 理由は俺もよくわからん
969デフォルトの名無しさん
2019/09/11(水) 12:13:22.75ID:9+CD8w/u ちなみに [a,b] は、std::tie(a,b) と書くのと同じですか?
また、[a,b] はなんという名称(概念)ですか?
また、[a,b] はなんという名称(概念)ですか?
970デフォルトの名無しさん
2019/09/11(水) 12:26:12.95ID:9+CD8w/u >>969
自己レスですが、[a,b] は、これですか:
https://en.cppreference.com/w/cpp/language/structured_binding
↑Structured binding declaration (since C++17)
int a[2] = {1,2};
auto [x,y] = a; // creates e[2], copies a into e, then x refers to e[0], y refers to e[1]
auto& [xr, yr] = a; // xr refers to a[0], yr refers to a[1]
自己レスですが、[a,b] は、これですか:
https://en.cppreference.com/w/cpp/language/structured_binding
↑Structured binding declaration (since C++17)
int a[2] = {1,2};
auto [x,y] = a; // creates e[2], copies a into e, then x refers to e[0], y refers to e[1]
auto& [xr, yr] = a; // xr refers to a[0], yr refers to a[1]
971デフォルトの名無しさん
2019/09/11(水) 13:04:41.28ID:9WrJeA7f972デフォルトの名無しさん
2019/09/11(水) 13:05:15.41ID:9WrJeA7f >>970
それ
それ
973デフォルトの名無しさん
2019/09/11(水) 13:05:17.06ID:zFEVPQj4 tieは良くないmaketuple使え
974デフォルトの名無しさん
2019/09/11(水) 13:28:34.92ID:9WrJeA7f >>973
ズレてるよ
ズレてるよ
975デフォルトの名無しさん
2019/09/11(水) 13:46:37.79ID:TkJgDVYV >>961
decltype(auto) f(){} ができればよいのだけどね。
decltype(auto) f(){} ができればよいのだけどね。
976デフォルトの名無しさん
2019/09/11(水) 20:20:32.38ID:jgB/KG+a Aクラスを継承したテンプレートで型を指定したメンバー変数cを持つ、Bクラスがある。
BクラスをキャストしたAポインタ仮想メソッド使ってBのメンバー変数cを取得したいんだけど、ダウンキャストしかないかね?
class A{};
template<typename _T>
class B : pubulic A{ pubulic : _T c;}
A *a = new B<int>;
int ret = A->???;
BクラスをキャストしたAポインタ仮想メソッド使ってBのメンバー変数cを取得したいんだけど、ダウンキャストしかないかね?
class A{};
template<typename _T>
class B : pubulic A{ pubulic : _T c;}
A *a = new B<int>;
int ret = A->???;
977デフォルトの名無しさん
2019/09/11(水) 20:23:28.97ID:xNhcwpCp > A *a = new B<int>;
なぜ?
なぜ?
978デフォルトの名無しさん
2019/09/11(水) 20:25:26.05ID:xNhcwpCp BのインスタンスをAにアップキャストした時点でAにないメンバは破棄されるのでAのポインタからcにアクセスすることはできない
979デフォルトの名無しさん
2019/09/11(水) 20:26:04.31ID:jgB/KG+a いろんな型をリスト化する為です。
実際はAポインタの配列
実際はAポインタの配列
980デフォルトの名無しさん
2019/09/11(水) 20:29:39.70ID:TkJgDVYV TypeHolderTypeがほしいのじゃーーーーー!!!
981デフォルトの名無しさん
2019/09/11(水) 21:01:04.58ID:QpQ1AfFp cにアクセスしたい人はBを知ってるんだから、ダウンキャストでもなんでもやりゃぁええがな。
982デフォルトの名無しさん
2019/09/11(水) 21:04:08.52ID:k/thmV8R variantなりanyなり使えば
983デフォルトの名無しさん
2019/09/11(水) 22:53:28.56ID:DdLw5bDK >>976
つーかダウンキャストじゃ何の不満が?
つーかダウンキャストじゃ何の不満が?
984デフォルトの名無しさん
2019/09/11(水) 23:37:41.00ID:dX8mKe9q 型の意味なしだろそれ
985デフォルトの名無しさん
2019/09/12(木) 00:03:44.43ID:2pi0Y8A7 ダウンキャストより先にテンプレートメソッドパターンを検討してみては?
986デフォルトの名無しさん
2019/09/12(木) 00:30:21.07ID:ikyWh7fv >>984
それってどれよ
それってどれよ
987デフォルトの名無しさん
2019/09/12(木) 01:15:25.34ID:t/6lHRNc988デフォルトの名無しさん
2019/09/12(木) 07:02:09.27ID:7HqgwkVj989デフォルトの名無しさん
2019/09/12(木) 07:11:59.50ID:fOl/Q6Ej anyじゃんそれ。
990デフォルトの名無しさん
2019/09/12(木) 07:21:48.35ID:guoHOxyl 型を無意味にするなんてとんでもない!
991デフォルトの名無しさん
2019/09/12(木) 07:24:41.60ID:7HqgwkVj ダウンキャストの必要が出てきたらvirtualで何とかならんか考えれ
992デフォルトの名無しさん
2019/09/12(木) 07:27:47.36ID:ikyWh7fv AとBだけじゃなくてどうせAの派生クラスはCやらDやらあってそれらもA*で扱うんでしょ。
ホントの型の判別やって型に応じて処理するんだろうしダウンキャストでええがな
ホントの型の判別やって型に応じて処理するんだろうしダウンキャストでええがな
993デフォルトの名無しさん
2019/09/12(木) 08:25:32.31ID:Ni5TNCQb それって欲しいのはunionてことじゃね?
それかAにすべてのメンバ乗せたらええやん。
それかAにすべてのメンバ乗せたらええやん。
994デフォルトの名無しさん
2019/09/12(木) 10:13:00.88ID:/QY4HS1k そもそもごった煮リストにすることが誤り
995デフォルトの名無しさん
2019/09/12(木) 10:18:31.65ID:7HqgwkVj excelみたいなことをするなと?
996デフォルトの名無しさん
2019/09/12(木) 15:18:39.72ID:W8pItA9j コンパイル時に自身のソースコード解析してリフレクション作ることとかできないですか?
997デフォルトの名無しさん
2019/09/12(木) 15:50:08.39ID:Cr8f/Gnu それはコンパイラ作ってるのに等しい
998デフォルトの名無しさん
2019/09/12(木) 18:08:13.67ID:WsH5tdUK 別の言語でやればいいじゃん
999デフォルトの名無しさん
2019/09/13(金) 12:32:55.83ID:+6+n/onN1000デフォルトの名無しさん
2019/09/13(金) 12:54:06.04ID:/ygW08Jq vtableがあればdynamic_castもできるのに何でダウンキャストなんだ?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 52日 23時間 35分 31秒
新しいスレッドを立ててください。
life time: 52日 23時間 35分 31秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- トランプ、G7に代わるcore 5を発表 [805596214]
- はいはい
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★5
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 灯油ストーブって臭いのか?北国の民教えろ
