gpt4 book ai didi

C++ 专用函数模板

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

我开始使用模板时遇到了问题。我想对 char* 类型使用函数 sum,但编译失败。

我得到的错误:

cannot initialize return object of type 'char*' with an rvalue of type 'int'

代码:

#include <iostream>

using namespace std;

template<class T>
T sum(const T a, const T b){
return (a+b);
}

char* sum(char* a, char* b){
return (*a + *b);
}

最佳答案

首先问 sum(char* a, char* b) 是做什么的?参数是字符串,而不是数字,所以可能操作应该连接两个字符串?写一些东西来实现这个:

char* sum(char* a, char* b){
char* sum = new char[ strlen(a) + strlen(b) + 1 ];
memcpy(sum, a, strlen(a));
memcpy(sum + strlen(a), b, strlen(b));
sum[strlen(a) + strlen(b)] = '\0';
return sum;
}

现在,如果您认为它增加了值(value),您可以专门化 sum 模板函数,使其执行您想要的操作。即

template<>
char* sum<char*>(char* a, char* b){
...

现在你可以这样做了:

int c = sum(5, 7);
cout << c << endl;

char face[5] = {'F', 'a', 'c', 'e', '\0'};
char book[5] = {'b', 'o', 'o', 'k', '\0'};
char* raw = sum(face, book);
cout << raw << endl;
delete [] raw; // Remember you need to delete the heap that sum() grabbed.

输出:

12
Facebook

这个例子当然很粗糙,不是你想在重要代码中做的事情。我假设这只是一个练习,因为以这种方式专门化不会增加任何特定的值(value),当然,这已经在标准库中以不同的方式实现了。

关于C++ 专用函数模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43977213/

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