错误、漏洞、问题 - 页 1873

 
Stanislav Korotky:
在最新的构建中,你们是否纠正了改变和重新编译EA代码时不被测试人员发现的错误?我必须关闭并重新打开终端,才能开始测试新版本的ex5。否则,将测试旧的变体。
我编辑专家顾问,然后用CTRL+F5,或者直接在策略测试器中看到充分的结果。
 
fxsaber:
我编辑专家顾问,通过CTRL+F5或直接在测试器中看到足够的结果。
Ctrl+F5是调试,对吗?我的问题不在于调试,而在于运行一个简单的测试。
 
Stanislav Korotky:
Ctrl+F5是调试,对吗?我的问题不在于调试,而在于运行一个简单的测试。
没有视觉效果,我在编辑后运行--很好。
 
fxsaber:

如何创建一个 带有封闭构造函数的隐藏对象

泄密事件就是这样发生的。

在这种情况下,不清楚如何调用一个析构器。辛格尔顿不是它。

一个具有封闭构造函数的类对象只能使用该类的特殊静态函数来创建。

尽管编译器目前没有对你引用的代码进行宣誓,但这一点在未来肯定会被修复。

你可以使用一个智能指针来调用析构器。

破坏者必须是开放的。

 
Koldun Zloy:

一个具有封闭构造函数的类的对象只能使用该类的特殊静态函数来创建。

尽管编译器目前没有对你引用的代码进行宣誓,但这一点在未来肯定会被修复。

在这种情况下提出的静态方法将是某种自我欺骗,因为它在本质上是一个构造函数。你将不得不明确地调用它。

你可以使用一个智能指针来调用析构器。

破坏者必须是开放的。

什么是智能指示器?
 

如果你确定构造函数应该是私有的,那就没有别的办法了。

智能指针是一个包含简单指针的对象,并确保它被及时删除。

class MyClass
{
public:
   MyClass();
};

struct MyClassPtr
{
   MyClass* pMyClass;

   MyClassPtr( MyClass* myClass ) : pMyClass( myClass )
   {
   }
   ~MyClassPtr()
   {
      delete pMyClass;
   }
};

这是最简单的选择。

也有更复杂的智能指针。

这本书中对他们写得非常好:https://rsdn.org/res/book/cpp/cpp_real_programmers.xml

C++ : библиотека программиста
  • rsdn.org
Глава 5. Умные указатели Глава 6. Ведущие указатели и дескрипторы Глава 7. Грани и другие мудрые указатели Глава 8. Коллекции, курсоры, итераторы Глава 9. Транзакции и гениальные указатели
 

缺少什么来使代码编译。

class CMyClass
  {
public:
   void* core;
   CMyClass(void) : core(NULL) { }
   template<typename T>
   void Create(T* a_ptr) {
      core = dynamic_cast<T *> (a_ptr);
   }
  };

class CCore
  {
public:
   int var;
   CCore(void) : var(3) { }
  };


int OnInit() {
   CCore *_point_1 = new CCore();
   CMyClass _obj;
   _obj.Create(_point_1);
   int _val = _obj.core.var;
   
   delete _point_1;
//---
   return INIT_SUCCEEDED;
}

这个变体写的是'var' - 结构成员未定义

PS.得到了这个错误 ))

int _val = dynamic_cast <CCore *>(_obj.core).var;


 
空白* 来自语言中的哪种构建?
 
fxsaber:
空白* 因为语言中的哪种构建?

这时接口就出现了
 
Sergey Dzyublik:

当接口进来的时候。
谢谢你。然而,我确实立即遇到了一个错误
struct PTR
{
  void* Ptr; // internal error #40
};