1

我正在使用 Delphi/C++Builder 的 EurekaLog 错误捕获器。他们所有的例子都在 Delphi 中,我正在使用 C++Builder。下面的 Delphi 代码是导致软件异常的示例之一。我试图将其转换为下面的 C++,但我的代码是错误的。你能告诉我正确的 C++ 代码来完成这项工作吗?

来自 EurekaLog 的 Delphi 代码

type
  EMyException = class(Exception);

Procedure TForm. ButtonClick(Sender: TObject);
begin
 raise EMyException.Create('Error Message');
end;

end.

我的 C++Builder 代码不起作用

typedef class{
  Exception;
}EMyException;

void __fastcall TForm1::ButtonClick(TObject *Sender)
{
  throw new EMyException("Error Message");
}
4

1 回答 1

4

您需要派生一个新类,而不是使用 typedef。new并且在调用时不要使用throw(这是C++Builder 中唯一TObject不能用 构造后代的区域new)。

class EMyException : public Exception
{
public:
    __fastcall EMyException(const String Msg) : Exception(Msg) {}
};

void __fastcall TForm::ButtonClick(TObject *Sender)
{
    throw EMyException("Error Message");
}
于 2018-11-06T18:33:51.977 回答