Мой вопрос связан с моим предыдущим постом:
явная специализация: синтаксическая ошибка?
Я пытаюсь передать массивы указателей на символы в качестве аргумента функции (которую я позже включу в специализированную функцию из предыдущего поста), но не могу получить правильный синтаксис.
В рамках основной программы было заявлено следующее:
char c0[30] = { "see if this works" };
char c1[30] = { "functions" };
char c2[30] = { "explicit specialization" };
char *d[] = { c0, c1, c2 };
следующая строка печатает «функции», как я и ожидал:
cout << "test print d[1] " << d[1] << endl;
Следующий шаг — проверить, могу ли я вернуть массив символов, который я хочу вернуть, но мой синтаксис неверен. Следующее возвращает ‘s’ (из c0) вместо целого массива char:
вызов функции:
cout << "string compare is " << compare2(*d, 3);
объявление функции:
char compare2(char const arr2[], int n) {
char temp;
temp = arr2[0];
return temp;
ценю помощь!
Ох, неважно. Я понял это: D
объявление указателя:
char *(d[]) = { c0, c1, c2 };
вызов функции:
cout << "string compare is " << compare2(d, 3);
определение функции:
char * compare2(char * const arr2[], int n) {
char * temp;
temp = *(arr2+2);
return temp;
}
Других решений пока нет …