Я новичок в работе с заголовками и всей абстракцией в C ++, и я заметил, что: когда вы объявляете функцию в файле. cpp, вы сначала указываете тип возврата функции, а затем namespace_name :: function_signature
, имя и аргументы функции те же, что вы уже указали в файле .h. Тем не менее, как мне написать сигнатуру функции, чье предварительное объявление (если так называются сигнатуры в файле .h) присутствует в том же пространстве имен, что и определяемый пользователем тип возвращаемого значения? (извините за подробности, код проще, чем мой вопрос; см. пояснения ниже)
Я хочу найти самую длинную последовательность равных чисел в данном массиве. Это мои файлы:
//"sequences.h" file
#ifndef LAB1_SEQUENCES_H
#define LAB1_SEQUENCES_H
namespace Sequences{
/**
* Abstract Data Type for a sequence
*/
struct seq{
int i;
int j;
};
/**
* Finds longest sequence of equal integers
* arr - array to search in
* n - number of elements in the array
*/
seq longest_equal(int* arr, int n);
}
#endif //LAB1_SEQUENCES_H
.
//"sequences.cpp" file
#include "sequences.h"
//Sequences :: seq Sequences :: longest_equal(int *arr, int n)
//seq Sequences :: longest_equal(int *arr, int n)
//struct seq longest_equal(int *arr, int n)
//Sequences :: struct seq longest_equal(int *arr, int n)
{
int i = 0, j = i + 1;
int lmax = -1, iR = -1, jR =-1 ; // lmax ar trebui sa fie 1 sau -1 ?
while (j < n )
{
if (arr[i] == arr[j]) j ++;
else
{
if (j - i > lmax) { lmax = j - i; iR = i; jR = j; }
i = j;
j = i + 1;
}
}
if (lmax > 1) return Sequences :: seq(iR, jR);
return Sequences::seq(-1, -1);
}
Теперь я не знаю, как заставить мою функцию longest_equal
в. cpp возврате файла seq
type (я имею в виду как сигнатуру в заголовочном файле, так и сигнатуру в файле. cpp, а также то, что я должен фактически написать перед командами возврата в конце реализации функции, в файле. cpp ).
Я пробовал закомментированные строки кода непосредственно перед первым знаком во втором файле как сигнатуры функции. Я также прочитал ответы на вопрос здесь и некоторые ответы на вопрос здесь и попробовал что-то сам, но безрезультатно.