template<class InIt, class Dist> void advance(InIt& it, Dist n);
このテンプレート関数は、it を n 回インクリメントして前に進めます。 InIt がランダム アクセス反復子型である場合は、式 it += n を評価 します。それ以外の場合は、各インクリメントを実行するのに ++it を 評価します。InIt が入力反復子型または前方反復子型である場合、 n は負でないものとします。
#include <iostream> class A { public: int a1; char *p; int a2;}; class B {public: int b1; int b2;}; union C { A aa; B bb;}; C c = { aa:{ 1, "hoge", 2 } }; C d = { bb:{ 3, 4 } }; int main(){ std::cout<< c.bb.b2 << "\n"; return 0;}
教えてください。 -------------------------------------------------------------- A * a; // 抽象クラス AA * aa = new AA(); // A の派生クラスその1 AB * ab = new AB(); // A の派生クラスその2
(中略)
void func(A * arg) { // ここで arg が AA を指すのか AB を指すのかを知りたい! } -------------------------------------------------------------- 上記のように抽象クラスのポインタを引数にとる関数の中で、 そのポインタが派生クラスのどのオブジェクトを指すのかを 知りたいのですが、さっぱりわかりません。 ご存知の方教えていただけないでしょうか?よろしくお願いします。