![]() |
1
80
读一读 http://weseetips.wordpress.com/tag/exception-from-constructor-initializer-list/ ) 编辑:经过更多的挖掘,这些被称为“功能试块”。 我承认我也不知道,直到我去寻找。你每天都在学习!我不知道这是否是我最近很少使用C++的罪名,我缺乏C++知识,或者是经常浪费语言的拜占庭特征。啊,好吧-我还是喜欢它:) 为了确保人们不必跳到另一个站点,构造函数的函数try块的语法是:
|
![]() |
2
16
不是特别漂亮:
|
![]() |
3
4
我知道讨论开始已经有一段时间了。但是亚当提到的Test-catch构造是C++标准的一部分,并由微软VC++和GNU C++支持。 这是有效的程序。通过这种方式,catch会自动生成另一个异常,以发出有关构造函数失败的信号。
|
![]() |
4
1
不过,您可以使用惰性初始化,也就是在MyClass中为读卡器保存一个唯一的指针,然后用new创建它。这样,您甚至不需要标记有读卡器,但您可以查看您的唯一指针是否是初始的。
当然,也有一些完全不使用异常的解决方案,但我认为这是您设置的前提条件。 |
![]() |
5
0
我不知道如何使用初始值设定项列表语法来实现这一点,但我也有点怀疑通过捕获构造函数中的异常,您是否能够做任何有用的事情。显然,这取决于类的设计,但是在什么情况下,您将无法创建“mb”,并且仍然有一个有用的“a”对象? 您也可以让异常渗透出来,并在调用的构造函数所在的位置处理它。 |