class A {}; class B { public: staticint k; }; int B::k = 0; #define MACRO( classC, classB ) \ class classC : public classB { \ public: \ classC( A *aa ) : a( aa ) {} \ //(1) A *a; \ //(2) int f( int i ); \ }; \ int classC::f( int i ) \ { \ classB::k = i; \ //error: '::' - open parenthesis expected int j = classB::k; \ //нормально return j; \ } MACRO( C, B )
{
const int a;
A() : a(this.f()) {}
int f() { return(0); }
};
あるいは、もっとシンプルな状況も。
{
const int a;
A() : a(this.f()) {}
int f() { return(0); }
};
Ilyas:
Почему список инициализации Вы не включаете в тело?
だって、const int a; じゃないとできないでしょ?
比喩的に言えば、(このクラスも含めて)クラスのオブジェクトは':'の記号で初期化されます。
モデレーターの皆様、マーケットで有料で販売されている製品(インジケーター)が無料で作れるのであれば、その作品をフォーラムでオープンに展示し、議論することは、禁止されることを恐れず可能でしょうか?あるいは、どうしたらいいのでしょうか?
コンパイルエラー
class B {
public:
static int k;
};
int B::k = 0;
#define MACRO( classC, classB ) \
class classC : public classB { \
public: \
classC( A *aa ) : a( aa ) {} \ //(1)
A *a; \ //(2)
int f( int i ); \
}; \
int classC::f( int i ) \
{ \
classB::k = i; \ //error: '::' - open parenthesis expected
int j = classB::k; \ //нормально
return j; \
}
MACRO( C, B )
ウェブエンジンのバグ
広告が禁止されている場合、禁止は即座に行われます。危ない ことはしない方がいい。
ブログのスレッドがあった方がいい、そこで何でもできる。