gpt4 book ai didi

c++ - 类型独特元素的容器

转载 作者:行者123 更新时间:2023-11-28 08:20:03 26 4
gpt4 key购买 nike

我知道问题标题有点含糊,所以至少感谢您阅读它 ;-)

我的情况是这样的:我有一组类CommandACommandB,...派生自一个普通的纯抽象基类ICommand。现在我需要将这些派生类的实例保存在某种容器中,但有一个限制,即在任何时候容器内只允许每个派生类型中的一个。相反,当一个已经存在的派生类型的项目被插入到集合中时,就会用新的实例替换现有的实例。

此外,还需要根据项目的类型从集合中删除项目。

我假设这需要在运行时进行某种类型的识别。我已经排除了 C++ 编译器提供的 Runtime-Type-Identification,因为我们可能在某些时候需要在(尚未知的)较旧的编译器上编译项目。因此,大多数机智的模板技巧也可能退出游戏。但坦率地说,我仍然非常感谢手动为我的派生类分配一些数字标识符...

我很感激关于这个问题的每一个提示。

提前致谢

阿恩

最佳答案

如果您不能使用模板或 RTTI,您可以这样做

          class ICommand
{
virtual void *getStaticId() = 0;
}



int bar;
void* CommandA::getStaticId()
{
return &bar;
}


int foo;
void* CommandB::getStaticId()
{
return &foor;
}

你可以使用每个类的静态变量地址作为它们的typeid

关于c++ - 类型独特元素的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com