gpt4 book ai didi

c++ - 指针作为模板参数?

转载 作者:可可西里 更新时间:2023-11-01 16:30:02 26 4
gpt4 key购买 nike

我有一个容器类,我们称它为

template <class T> CVector { ... } 

当 T 是指针类型时,我想对这个类做一些不同的事情,例如类似的东西:

template <class T*> CVector< SomeWrapperClass<T> >;

其中 SomeWrapperClass 期望指向事物的类型作为其参数。不幸的是,这种语法并不能很好地工作,并且经过一些挖掘,我还没有找到一个好的方法来让这样的东西工作。

为什么要这样做?我想在一个非常大的应用程序中改变我们的一些容器在它们专门针对的类型是指针而不是指针时的工作方式 - 理想情况下,我想在不改变〜1,000个地方的情况下做到这一点在代码中有类似 CVector<Object*> 的东西对比CVector<int>或类似的东西 - 玩具有部分特化的游戏似乎是可行的方法。

我是不是快崩溃了?

最佳答案

如果我对你的理解正确,这可能会做你想做的:

template<typename T>
class CVector { ... };

template<typename T>
class CVector<T*> : public CVector< SomeWrapperClass<T> > {
public:
// for all constructors:
CVector(...) : CVector< SomeWrapperClass<T> >(...) {
}
};

它添加了一个额外的继承层来欺骗 CVector<T*>成为CVector< SomeWrapperClass<T> > .如果您需要添加其他方法以确保 T* 的预期接口(interface)之间完全兼容,这也可能很有用。以及为 SomeWrapperClass<T> 提供的接口(interface).

关于c++ - 指针作为模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1134283/

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