MQL5中的OOP问题 - 页 81 1...747576777879808182838485868788...96 新评论 Igor Makanu 2020.06.13 18:52 #801 关于铸造的另一个问题 有这样的代码。 struct SHash { ulong hash[2]; SHash() { } SHash(const double) { ArrayInitialize(hash, 0xAAAAAAAAAAAAAAAA); } SHash(const SHash &val) { ArrayCopy(hash, val.hash); } bool operator==(const SHash &val)const { return(hash[0] == val.hash[0] && hash[1] == val.hash[1]); } }; //+------------------------------------------------------------------+ class BASE { private: const SHash _hash; protected: BASE(SHash &hash): _hash(hash) { } }; class A:BASE { public: A(SHash &hash):BASE(hash) { } }; class B:BASE { public: B():BASE((SHash)0.0) { } }; //+------------------------------------------------------------------+ void OnStart() { SHash h(0.0); A a(h); } //+------------------------------------------------------------------+ 我想用不带参数的构造函数来初始化B类,但我不能把SHash结构投到构造函数SHash(const double)中。 即我需要一些铸造(SHash)的双倍。 在我的例子中,有一个编译器错误:'(SHash)' - 无效的投掷操作 如果你这样写的话。 class B:BASE { public: B():BASE(0.0) { } }; 错误:'0.0'--参数作为参考传递,变量应是 Vladimir Simakov 2020.06.13 18:57 #802 Igor Makanu:关于铸造的另一个问题有这样的代码。我想用不带参数的构造函数来初始化B类,但我不能把SHash结构投到构造函数SHash(const double)中。即我需要一些铸造(SHash)的双倍。在我的例子中,有一个编译器错误:'(SHash)' - 无效的投掷操作如果你这样写的话。错误:'0.0'--参数作为参考传递,变量应是 class B:BASE { public: B():BASE(SHash()) { } }; Igor Makanu 2020.06.13 19:06 #803 Vladimir Simakov: 它是这样工作的 但需要对SHash结构进行0xAAAAAAAA初始化--它是某种NULL--不能从测试字符串中获得MD5哈希值(我检查过)。 SHash()构造函数现在似乎不需要了,但几天前似乎还需要))。所以,一开始它不存在,然后我在某个地方修复了这个空构造函数的编译错误,或者在比较结构时,或者在初始化时......一般来说,很有可能需要....。尽管初始化所有变量似乎是一个很好的规则,....。 一般来说,我希望我有一个变体或毫不含糊的 - 没有)))) Vladimir Simakov 2020.06.13 19:11 #804 Igor Makanu:它是这样工作的但需要对SHash结构进行0xAAAAAAAA初始化--它是某种NULL--不能从测试字符串中获得MD5哈希值(我检查过)。SHash()构造函数现在似乎不需要了,但几天前似乎还需要))。所以,一开始它不存在,然后我在某个地方修复了这个空构造函数的编译错误,或者在比较结构时,或者在初始化时......一般来说,很有可能需要....。尽管初始化所有变量似乎是一个很好的规则,....。在一般情况下,我希望我有一个变体或毫不含糊 - 没有))。 SHash(0.0) 但你自己猜吧?) Alexandr Andreev 2020.06.13 19:14 #805 Vladimir Simakov:但你自己猜猜看吧))。 SHash((double)x) Igor Makanu 2020.06.13 19:15 #806 Vladimir Simakov:并自己猜测?) class B:BASE { public: B():BASE(SHash(0.0)) { } }; 哦,伙计,它的工作! 我想我也试过这种方式,我不知道为什么没有成功。 谢谢! 糟糕的乱七八糟的()! Vladimir Simakov 2020.06.13 19:18 #807 Alexandr Andreev: 是的,那你在类的构造函数 中从哪里得到x呢?)) Alexandr Andreev 2020.06.13 19:19 #808 Vladimir Simakov:是的,那你在类的构造函数 中从哪里得到x呢?) 重点不是x),而是在接收端可能有一个浮点,只是0.0也不可靠。 Alexandr Andreev 2020.06.13 19:21 #809 Alexandr Andreev:问题的关键不在于x),而在于除了小数点之外,接收器上可能还有一个浮点,只指定0.0也是不可靠的。 虽然这一切是一个细节...不是特别重要 Igor Makanu 2020.06.13 19:23 #810 Alexandr Andreev:重点不在于x),而是在接收上可能有浮动的duble,所以只指定0.0也不可靠。 在这里初始化什么并不重要,甚至是int--任何数字都可以调用这个构造函数。 我选择0.0是为了避免误印--任何数字,即0.0,都比123更难书写和误印。 1...747576777879808182838485868788...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于铸造的另一个问题
有这样的代码。
我想用不带参数的构造函数来初始化B类,但我不能把SHash结构投到构造函数SHash(const double)中。
即我需要一些铸造(SHash)的双倍。
在我的例子中,有一个编译器错误:'(SHash)' - 无效的投掷操作
如果你这样写的话。
关于铸造的另一个问题
有这样的代码。
我想用不带参数的构造函数来初始化B类,但我不能把SHash结构投到构造函数SHash(const double)中。
即我需要一些铸造(SHash)的双倍。
在我的例子中,有一个编译器错误:'(SHash)' - 无效的投掷操作
如果你这样写的话。
它是这样工作的
但需要对SHash结构进行0xAAAAAAAA初始化--它是某种NULL--不能从测试字符串中获得MD5哈希值(我检查过)。
SHash()构造函数现在似乎不需要了,但几天前似乎还需要))。所以,一开始它不存在,然后我在某个地方修复了这个空构造函数的编译错误,或者在比较结构时,或者在初始化时......一般来说,很有可能需要....。尽管初始化所有变量似乎是一个很好的规则,....。
一般来说,我希望我有一个变体或毫不含糊的 - 没有))))
它是这样工作的
但需要对SHash结构进行0xAAAAAAAA初始化--它是某种NULL--不能从测试字符串中获得MD5哈希值(我检查过)。
SHash()构造函数现在似乎不需要了,但几天前似乎还需要))。所以,一开始它不存在,然后我在某个地方修复了这个空构造函数的编译错误,或者在比较结构时,或者在初始化时......一般来说,很有可能需要....。尽管初始化所有变量似乎是一个很好的规则,....。
在一般情况下,我希望我有一个变体或毫不含糊 - 没有))。
但你自己猜吧?)
但你自己猜猜看吧))。
SHash((double)x)
并自己猜测?)
哦,伙计,它的工作!
我想我也试过这种方式,我不知道为什么没有成功。
谢谢!
糟糕的乱七八糟的()!
是的,那你在类的构造函数 中从哪里得到x呢?))
是的,那你在类的构造函数 中从哪里得到x呢?)
重点不是x),而是在接收端可能有一个浮点,只是0.0也不可靠。
问题的关键不在于x),而在于除了小数点之外,接收器上可能还有一个浮点,只指定0.0也是不可靠的。
虽然这一切是一个细节...不是特别重要
重点不在于x),而是在接收上可能有浮动的duble,所以只指定0.0也不可靠。
在这里初始化什么并不重要,甚至是int--任何数字都可以调用这个构造函数。
我选择0.0是为了避免误印--任何数字,即0.0,都比123更难书写和误印。