相关疑难解决方法(0)

什么是C++中的多态类型?

我在一篇文章中发现"static_cast用于非多态类型转换,而dynamic_cast用于多态类型转换".我知道int和double不是多态类型.

但是,我还发现static_cast可以在基类和派生类之间使用.这里的多态类型是什么意思?有人说多态类型意味着具有虚函数的基类.是对的吗?这是唯一的情况吗?还有什么?任何人都可以为我详细说明这个吗?

c++

26
推荐指数
3
解决办法
2万
查看次数

从动态类型信息创建新对象

在C++中,有没有办法查询对象的类型,然后使用该信息动态创建相同类型的新对象?

例如,假设我有一个简单的3类层次结构:

class Base
class Foo : public Base
class Bar : public Base
Run Code Online (Sandbox Code Playgroud)

现在假设我给你一个类型为Base的对象 - 实际上是Foo类型.有没有办法查询类型并使用该信息以后来创建Foo类型的新对象?

c++ rtti

20
推荐指数
3
解决办法
2万
查看次数

以某种方式在列表中注册我的类

我希望能够在一个std::map或一个向量中注册我的类,不要考虑重复等现在,但我不想在类构造函数调用或类的任何函数内注册它,不知何故在课外进行,所以即使我从未实例化它,我也能够知道它存在.

例:

// Somehow, from outside the myclass, in a scope that will be called
//in the begining of the proccess, add "MyClass1" to a 
//list so it can be instanciated later
class MyClass1{

}
Run Code Online (Sandbox Code Playgroud)

然后我会做一个#define或如果能够,模板.
我不知道我是否清楚(再次)......我的观点是,我需要知道我所拥有的每一堂课,而不必打电话给他们每一个人.
我的想法是创建一个#define更容易声明类的标头并调用将该特定类注册到列表的东西

可以这样做还是我必须手动映射?

// desirable:
#define CLASSREGISTER(myclass) makethemagic(##myclass); class myclass {
};
Run Code Online (Sandbox Code Playgroud)

我知道,在那个定义中我不能使用继承等...我的观点是试图给出一个我想要以某种方式创建的例子......

c++ class c-preprocessor

6
推荐指数
1
解决办法
3621
查看次数

标签 统计

c++ ×3

c-preprocessor ×1

class ×1

rtti ×1