我正在用C++为我的库设计一个异常层次结构。“层次结构”是从std::runtime_error派生的4个类。我想要避免异常类的,因此使复制构造函数受到保护。但显然,在抛出副本构造函数时,gcc需要调用副本构造函数,因此抱怨受保护的副本构造函数。Visual C++ 8.0可以很好地编译相同的代码。有没有什么可移植的方法来解决异常类的切片问题?该标准是否说明了实现是否可以/应该要求抛出的类
我注意到Swig提供了大量的函数,允许将对象类型转换到它们的父类。但是,在C++中,可以生成如下函数:{ return (A *) new B; return (A然后,您可以在方便的情况下将返回的指针键入为"B“类型或"C”类型,例如:有什么方法可以在运行时用包装器在脚本语言中键入从泛型指针生成函数<
在似乎是有意的设计决策中,C++对于对象和引用没有空值。这使得使用对象和引用非常优雅,因为我们不需要执行空检查。它还意味着构造函数必须始终返回一个对象: // o is guaranteed to be non-null by c++:
Object o = new由于C++不允许这样做,程序员已经开发了替代方法:初始化方法(具有不同名称)、静态构建器方法、不使用任何多态性的“工厂”以及空对象。添加异常的一个原因可能是为了绕过C++