gpt4 book ai didi

C++ 专用方法模板产生多个定义错误

转载 作者:行者123 更新时间:2023-12-01 14:47:01 24 4
gpt4 key购买 nike

我正在使用 C++ 98。我正在编写一个 JSON 对象包装器。对于所有普通数字,它们可以使用相同的函数,但对于浮点数和 double 数,我需要一个单独的函数。字符串也一样。我使用模板和特化编写了这个,它编译得很好,但是当我构建我的整个项目时,我会遇到关于多个定义的大约 10 亿个错误。我认为我没有正确地特化。我能够在类对象本身中有和没有这些定义的情况下编译这个文件,所以我什至不知道是否需要这些定义。

class Object {
public:
template <class T>
bool Set(std::string key, T value);
// having these defined or not doesn't seem to matter
bool Set(std::string key, double value);
bool Set(std::string key, float value);
bool Set(std::string key, std::string value);
};


template <class T>
bool Object::Set(std::string key, T value){
}

template <>
bool Object::Set<double>(std::string key, double value){
}


template <>
bool Object::Set<float>(std::string key, float value){
}

template <>
bool Object::Set<std::string>(std::string key, std::string value){
}
我如何正确地专门化这些模板,以便编译器/链接器不合适?

最佳答案

如果您在头文件中的类之外定义模板成员函数的特化,则需要进行特化 inline像这样:

template <> 
inline bool Object::Set<double>(std::string key, double value){
}

template <>
inline bool Object::Set<float>(std::string key, float value){
}

template <>
inline bool Object::Set<std::string>(std::string key, std::string value){
}

关于C++ 专用方法模板产生多个定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63529059/

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