gpt4 book ai didi

c++ - 关于调用具有专门模板的类的混淆

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:04 25 4
gpt4 key购买 nike

我有一个使用模板并可以存储多种抽象数据类型 (ADT) 的“存储库”(仓库,随便你怎么称呼)。

代表

template <typename TAD>
class Repository {
public:
DynamicArray <TAD *> tad; // made a dynamic array myself, also uses templates

// since one ADT has one of the following two functions and the other doesn't
// I decided to not use TAD here

Person *findByName (string name);
Activities* findByDate(string date);

void save (TAD &p);
//etc
}

Rep.cpp

template <>
void Repository<Person>::save(Person &p) throw (RepositoryException) {
@code
}
template <>
void Repository<Activities>::save(Activities& a) throw (RepositoryException) {
@code
}
//etc

现在我有一个单独处理 ADT 的 Controller ,所以我想创建一个仅反射(reflect)抽象数据类型“Person”的存储库

我如何调用?(创建一个以 Person 或 Activity 作为模板...参数的存储库类型的对象?)

像这样: ? (下)

PersonController.h

Repository<Person> *repository;

ActivityController.h

Repository<Activities> *repository;

最佳答案

您无法链接到模板,因为链接器无法创建特化——编译器需要这样做。您需要将您的模板(来自 Rep.cpp)放入您的 Rep.h 文件中,以便编译器可以创建您需要的特化。

关于c++ - 关于调用具有专门模板的类的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603732/

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