class A {
};
class B : public A {
public:
voidoperator++( int ) {}
voidoperator++() {}
};
void f( A* a )
{
((B *)a).operator++( 0 ); //нормально
((B *)a).operator++(); //нормально
++((B *)a); //нормально
((B *)a)++; //ошибка
}
class A {
public:
int f() { return ( 1 ); }
};
class B {
public:
B( const A *aa ) : a( aa ) {}
int g() { return ( a.f() ); } //должно быть предупреждение, поскольку a.f() не constconst A *a;
};
後置演算子++の省略表記は、ベースクラスのポインタを派生クラスのポインタに明示的に変換した場合、コンパイルできない。
少なくとも,コンパイラは a.f() が const でないことを警告 する必要があります。
ご指摘ありがとうございます。どちらのエラーも修正しました。
でも、テンプレートでは。 後ほど例を挙げますね。
ここも......はっきりしない。
はすべて正常に動作しますが、中間関数ex2(...)を追加すると
結果が違うんです。ex2(...)は何をしたのですか?- でポインタを参照渡しにしただけです。
をご覧ください。
ここも......はっきりしない。
はすべて正常に動作しますが、中間関数ex2(...)を追加すると
結果が違うんです。ex2(...)は何をしたのですか?- でポインタを参照渡しにしただけです。
をご覧ください。
今に始まったことではありませんが、アップロード時にそのような写真が出るということは、何らかの条件(サイズが決まっているのでしょう)を設定しなければなりません。
).それ以外の場所では普通に表示されます。何が問題なのか、教えてください。
マクロで結果型の変換を行い、その戻り値がその後使用されない場合、不要なコンパイルエラーが 発生する(必要な場合と不要な場合がある)。
これは、defineの使用とは関係ない。
単純にdefineと同等にしても、同じエラーが発生します。
P.S. 今度はここにボーニングが登場します。
インジケーターを再コンパイルすると、動的配列を 扱うときに「array out of range」エラーが発生するようになりました。
以前は発生しなかった。どうすればいいのか?