スタート - あなたは、このような関数を書く2つの文字列を追加したい場合は、retun a
を(前年比戻り値の型を参照)ことができますか?パラメータは文字列であり、数値ではありません。おそらく2つの文字列を連結する必要がありますか?あなたはそれが付加価値を考える場合
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;
}
今、あなたは、それはあなたがそれがやりたいことにするsum
テンプレート関数を特化することができます。これを達成する何かを書きます。私。
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
この例は非常に原油とないもちろん、あなたがやりたいと思いますものです
template<>
char* sum<char*>(char* a, char* b){
...
だから今、あなたはこれを行うことができます重要なコード。私はこれが単なる演習であると仮定しています。この方法では、特定の価値を追加することはできません。もちろん、これはすでに標準ライブラリでさまざまな方法で達成されています。
あなたの 'sum(char * a、char * b)'は何を達成しようとしていますか?私はこれがテンプレートの問題だとは思わない。あなたは、aとbが指すアドレスに文字値を追加し、結果を数字ではなく文字へのポインタとして解釈しようとしているように見えます。 –
私は関数sum(a、b)をテンプレートと型 'char *'の特殊関数を使って実装する必要があります。 –