Sergei Vladimirov: はい、ご質問の件、了解しました。もっと適切なシグネチャを持つ関数があるのですが、プロテクトされているため呼び出すことができません。はい、Studioとは動作が異なります。MKLでは、(この場合)より厳密な型制御が行われているのです。それをバグと考えるべきかどうかはわからないが。関数に渡される引数の型を制御すれば、問題はありません。
制御はむしろ選択的であるため、より矛盾が生じますが、これはここから導かれます。
class A { public: void f( int ) const {} /*(1)*/ void f( int ) {} /*(2)*/ }; class B : public A { public: void f( int ) const {} /*(3)*/ }; voidOnStart() { B b; //не const B b.f( 0 ); //(*)
}
ここで(*)集合体において(const B bでないことを考慮すると)A::f/*(2)*/の呼び出しはより多くの場合
class A { public: void f( int ) const {} /*(1)*/ void f( int ) {} /*(2)*/ }; class B : public A { public: void f( int ) const {} /*(3)*/ }; voidOnStart() { B b; //не const B b.f( 0 ); //(*)
}
ここで、(*) の集合体では、(const B b でないことを考慮すると) A::f/*(2)*/ の呼び出しがより多くなります。
kodobaseでティックインジケーターを 作りました。しかし、ソースを添付することができません。「ファイルを添付する」を押すと、銘板は消えますが、ファイルを選択するインターフェイスが表示されないのです。
ポップアップをブロックするアドブロックがインストールされているのでしょうか?
何も変えていないんです。以前はすべてうまくいっていた。
チェックアウトの際に、このボタンを押すと
これ以外、何も帰ってこない。
はい、ご質問の件、了解しました。もっと適切なシグネチャを持つ関数があるのですが、プロテクトされているため呼び出すことができません。はい、Studioとは動作が異なります。MKLでは、(この場合)より厳密な型制御が行われているのです。それをバグと考えるべきかどうかはわからないが。関数に渡される引数の型を制御すれば、問題はありません。
制御はむしろ選択的であるため、より矛盾が生じますが、これはここから導かれます。
class A {
}public:
void f( int ) const {} /*(1)*/
void f( int ) {} /*(2)*/
};
class B : public A {
public:
void f( int ) const {} /*(3)*/
};
void OnStart()
{
B b; //не const B
b.f( 0 ); //(*)
しかし、C++は常に、派生クラスが適切なメソッドを持っているだけなら、より適切なメソッドのためにベースクラスを分析することはない。
そしてMQLは、前の例ではより適切なメソッドがないかベースクラスを分析しましたが、この例では分析しません(ここでもC++と同様にB::f/*(3)*/を呼び出します)、これは統一されたアプローチがないことを意味します。
一貫性のない制御の別の例:C++は、次のコードを見つけます。
void f( int i ) const {}
void f( uint i ) {}
};
void OnStart()
{
A a;
a.f((int)0 );
}
制御はむしろ選択的であるため、より矛盾が生じますが、これはここから導かれます。
class A {
}public:
void f( int ) const {} /*(1)*/
void f( int ) {} /*(2)*/
};
class B : public A {
public:
void f( int ) const {} /*(3)*/
};
void OnStart()
{
B b; //не const B
b.f( 0 ); //(*)
しかし、C++は常に、派生クラスがちょうど良いメソッドを持っている場合、より適切なメソッドのためにベースクラスを分析することはない。
そしてMQLは、前の例ではより適切なメソッドがないかベースクラスを分析しましたが、この例では分析しません(ここでもC++と同様にB::f/*(3)*/を呼び出します)、これは統一されたアプローチがないことを意味します。
一貫性のない制御の別の例:C++は、次のコードを見つけます。
void f( int i ) const {}
void f( uint i ) {}
};
void OnStart()
{
A a;
a.f((int)0 );
}
C++コンパイラは何を使っていますか? 私はgccを使っていますが、何のエラーもなく全てパスしています。
void f( int i ) const {} //1
void f( unsigned int i ) {} //2
};
void OnStart()
{
A a;
a.f((int)0 );
}
(1)または(2)。ここで、コンパイラーメッセージを 挿入します
それは本当に厳密なコントロールです。ある方法はシグネチャーの点で、ある方法は一貫性の点で、よりフィットします
これは本当に厳密なコントロールで、ある方法は署名によって、ある方法は不変性によってより適しているのです
そして、なぜそのようなことを書くのかが不明です。
f -> operator[]に置き換えて、最近の例を参考に、[]を左右両方作るにはどうしたらいいか考えてみてください。味に恒常性を持たせる--それをテンプレートで包むと、似たようなものができあがる。
If make const - without ifを検討する。
曖昧さが許されないのであれば、せめて警告を発するべきである
f -> operator[]に置き換えて、最近の例を参考に、[]を左右両方作るにはどうしたらいいか考えてみてください。味にコンスタンスを加える--それをテンプレートで包むと、似たようなものができあがります。
どの例のことを言っているのでしょうか?ソースではなく、動作するはずの最終的なエントリを教えてください。
最終的にこのような形になるはずです。
{
A<int> a;
int b = a[ 0 ];
a[ 0 ] = a[ 1 ];
a[ 1 ] = b;
}
最終的にこのような形になるはずです。
{
A<int> a;
int b = a[ 0 ];
a[ 0 ] = a[ 1 ];
a[ 1 ] = b;
}