class cA;
class cB;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class cA
{
//====================private:
//====================//===============//===============
cB *B;
//===============//===============void testfunc(void){::Print(__FUNCSIG__);}
//====================public:
//====================//===============//===============void test(void)
{
::Print(__FUNCSIG__);
if(::CheckPointer(::GetPointer(this.B))==POINTER_INVALID)return;
this.B.testfunc();// Здесь идет вызов private метода объекта B, что вроде как не должно быть возможным
}
//===============//===============void SetB(cB *const b){this.B=b;}
//===============//===============
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class cB : public cA
{
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
//---
cA A;
cB B;
A.SetB(&B);
A.test();
//---return(INIT_SUCCEEDED);
}
クローム
スマートフォンに搭載されていたブラウザーをお試しください。
FireFoxの場合、まだトップでテーマを更新しています。
そして、左の青いもの
Chromeでも同じです。このブルー/グレーのアイコンを自動的に表示させることができないんです。そして、未読のトピックの太字が印象的で、それについて書いたりもしています。
AcePrime-Demoのアカウントで面白い事例がありました。
Expert Advisorを起動します。
そして、任意のボ・シンボル(バイナリーオプション)のポジションを建てようと します。端末のログでは、次のようになります。
'3182780': market sell 1.00 XAUUSDbo '3182780': failed market sell 1.00 XAUUSDbo [Invalid data]
Expert Advisorのログでは、次のようになります。
確認したところ、OrderCheckはtrueを返しました。トレードセッションの開始などしかし、MT5は手動と自動の両方の要求について同じように警告を出し、retcode = 4を与えています。端末では問題ないと言っているのに、実際にやってみると何も起こらないというのは、なぜなのでしょうか?開かないということを要望なしに理解するにはどうしたらいいのでしょうか?そして、この4つ目のリターンコードは何でしょうか?
GetLastError() は以下を返します。
err_trade_send_failed
4756
取引要求の送信に失敗しました
すべて問題なく再現します。
こんにちは。
このようなコードはコンパイルできないはず(プライベートメンバーアクセスエラーが出るはず)だと思うのは私だけでしょうか?
SDは大丈夫、そんなこともできるんだと...。
こんにちは。
このようなコードはコンパイルできないはず(プライベートメンバーアクセスエラーが出るはず)だと思うのは私だけでしょうか?
SDは大丈夫、そんなこともできるんだと...。
MQLのルールでは、あるクラスのインスタンスが、最初のインスタンスと同じクラスに属していれば、別のインスタンスのプライベートフィールドやメソッドに自由にアクセスすることができます。cBはcAから継承されているので、cBはcAであり、したがってcAは、それがどこで宣言されているかにかかわらず、cBインスタンスの任意のプライベートメソッドとフィールドにアクセスすることができます。
MQLのルールでは、あるクラスのインスタンスが、最初のインスタンスと同じクラスに属していれば、別のインスタンスのプライベートフィールドやメソッドに自由にアクセスすることができます。cBはcAから継承されているので、cBはcAであり、したがってcAは、それがどこで宣言されていても、cBインスタンスの任意のプライベートメソッドとフィールドにアクセスすることができます。
ありがとうございます。ドキュメントでは見たことがないのですが。ご指摘いただけますか?
ありがとうございます。ドキュメントを見ても、この機能には出会っていない。ご指摘いただけますか?
これはC++でも 同様です(MQLはC++のイメージと似通った形で作られています)。よく言われるように、C++のプライバシーはオブジェクトレベルではなく、クラスレベルにあります。そうでなければ、例えば、すべてのプライベートフィールドに特別なゲッターメソッドを持たないコピーコンストラクタを作ることはできないでしょう。
C++でも 同じです