gpt4 book ai didi

具有函数模板和重载的 C++ 类

转载 作者:行者123 更新时间:2023-11-28 07:52:57 25 4
gpt4 key购买 nike

<分区>

我希望用 C++ 创建一个序列化类,以满足我正在从事的项目的需要。请考虑以下事项:

class serializer {
private:
void s(int in, std::string &out);
void d(std::string in, int &out);

public:
template<typename T> void serialize(T in, std::string &out){
s(in, out);
};

template<typename T> void deserialize(std::string in, T &out){
d(in, out);
};
};

我是模板的新手,所以我在那里做的肯定是错误的,因为它不会链接提示“ undefined reference ”:

undefined reference to `void serializer::serialize<int>
(int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'

这样调用时:

serializer s;
int t = 0;
std::string str;
s.serialize(t, str);

我想要做的是让一个类有两个公共(public)方法 serializedeserialize ,无论它们的参数类型如何,它们都可以调用,每个都会调用基于函数重载的适当私有(private)函数。

我做错了什么?

编辑:

问题是链接器报错了。问题不在于函数模板,而在于未在 .cpp 文件中正确声明为类成员的 s()d() 函数。所以错误源于函数模板无法调用 d()s(),因为它们没有定义,只是声明,实际上。

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