type* varなんつー邪道な書き方する奴がいるから悪いんだよな・・・ かく言う俺もだが。 757の指摘はあってるかもしれん。 ちょっと考えればわかることなのにな。 class A{}* a, b; だったら、誰がどう見てもbはA*じゃなくてAになるからな。 Aを定義済みにすれば A* a, b; でもbがAになることくらい容易に理解できる。
関数の引数にデフォルト値を持たせる場合に関してなんだが…、 ISO/IEC 14882:1998(E) -- C++ -- Declarators http://www.kuzbass.ru/docs/isocpp/decl.html の 8.3.6 - Default arguments [dcl.fct.default] の部分にある > -4- ……In a given function declaration, all parameters subsequent to a parameter with > a default argument shall have default arguments supplied in this or previous declarations. は、part19(前スレ)の726-728 http://pc2.2ch.net/test/read.cgi/tech/1052625846/726-728 の話だよね。で、それに続く以下の文: > A default argument shall not be redefined by a later declaration (not even to the same value). の文は、「同じscope内では同じ引数に対してdefault値を(たとえ同じ値であって も)複数回指定することはできない」なんだろうけど…、コンパイルできたぞ (@_@)?!!
/* * プロトタイプ宣言 */ //int foo ( int a , int b , int c ) ; int foo ( int a , int b , int c=3 ) ; int foo ( int a=1, int b=2, int c=3 ) ;/* 第3引数(c)のデフォルト値を再定義 */
/* * 定義 */ int foo ( int a, int b, int c ) { return (a+b+c); }
int main ( void ) { cout << "foo()=" << foo() << endl ; return 0 ; } ----------(ここまで)
基底クラスがあり(他にも仮想関数等がある予定。改行多くなるのでpublic等省略) class IUnko{ IFoo(void* lpParam); }; それを継承したクラスを複数個書く class CTestA : public IUnko{ CTestA(void* lpParam); }; class CTestB : public IUnko{ CTestB(void* lpParam); };
これの生成をIDで指定したいのです。 IUnko* Make(long id,void* lpParam); id に 1を渡すとCTestAが作られ、 id に 2を渡すとCTestBが作られる。 みたいな。