Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有一种方法可以在不显式键入每个类的情况下实例化许多类?_C++ - Fatal编程技术网

C++ 有没有一种方法可以在不显式键入每个类的情况下实例化许多类?

C++ 有没有一种方法可以在不显式键入每个类的情况下实例化许多类?,c++,C++,我有多个类,每个类对应一个可以调用的API。我将这些类从一个中心文件移到它们自己的单独文件中,这样测试就更容易了。目前的结构如下: class Foo : Public Parent{ //stuff } Parent* bar = new Foo(this); Register(bar); 基本上,需要对每个类的实例调用Register()函数,以便在系统中使用API 将每个类移动到自己的文件后,下面是我如何从中心文件实例化每个类: Namespace::api0(this); Na

我有多个类,每个类对应一个可以调用的API。我将这些类从一个中心文件移到它们自己的单独文件中,这样测试就更容易了。目前的结构如下:

class Foo : Public Parent{
    //stuff
}
Parent* bar = new Foo(this);
Register(bar);
基本上,需要对每个类的实例调用
Register()
函数,以便在系统中使用API

将每个类移动到自己的文件后,下面是我如何从中心文件实例化每个类:

Namespace::api0(this);
Namespace::api1(this);
Namespace::api2(this);
//etc
(作为这些类迁移的一部分,
Register()
函数被移动到它们的构造函数中)


我的问题是,有没有一种方法可以在不显式键入每个类的名称的情况下实例化每个类?我可以通过某种方式对它们进行分组,或者通过我的文件结构动态查找它们吗?我们讨论的是大量的类,因此找到一个更具动态性的方法将有助于将来的维护。

您的模板技能有多扎实?也许你可以用它来考虑一些事情,因为它似乎是一个相似的模式。另一种可能是预处理器,创建一个宏(不推荐,因为应该避免PP)。“我的问题是,有没有一种方法可以实例化每个类而不显式地键入每个类的名称?”-听起来像是在寻找一些巫毒魔法…:-)。。撇开玩笑不谈,你可能需要为此编写一些自动代码生成器。@jonas_toth我可以生成一个宏,但如何避免为每个类调用该宏?我会研究一下模板。因为你已经发布了一些代码,所以不清楚你在问什么。对于当前的代码库是什么样子以及最终的代码库是什么样子,这就留下了很多猜测。我看过一些代码,在这些代码中,您定义了一个执行基本操作的宏,然后包含一个文件,这将导致许多宏调用。不确定这是否有帮助。我强烈建议您对这样的事情三思而后行:)但是所有的实例都可以发生在模板化的函数/类中。每种类型都必须调用它。