В последнее время я работаю над небольшим проектом и не могу что-то выяснить ..
Мне дали файл .h, который содержал класс, используя шаблон typename. Внутри этого класса был частный класс.
template <typename T>
class Something
{
public:
Something();
~Something();
Node* Function1(int index);
int Index(const T& id);
private:
class Node()
{
public:
T id;
//Imagine the rest for the Node
};
};
Проблема возникла, когда я захотел определить функции класса «Что-то»
Вот как я это делал (в файле .inl)
template<typename T>
Node* Something::Function1(int index) //Is the return type well written?
{
// returns the node at the specified index
}
template<typename T>
int Something::Index(const T& id) //Is the parameter type well specified?
{
// returns the index of the node with the specified id
}
Таким образом, часть с ошибками была в части определений ... Должен ли я сказать компилятору, что тип возвращаемого значения (в данном случае Node *) использует шаблон typename (например: typename Node*
)? А как насчет параметра? typename const Node&
?
Таким образом, в основном, когда мне нужно указать, будет ли функция / параметр использовать шаблон?
Спасибо за ваше время.