Судя по всему, вам не хватает *
в объявлении статического члена: вы определяете TreeMapNode*
, но вы объявили TreeMapNode
.
При этом обратите внимание, что этовероятно, не совсем то, что вам нужно: 1. если вы оставите определение статического члена в заголовке, вы получите несколько определенных символов, если вы когда-либо будете использовать TreeMap
с одинаковыми аргументами шаблона в разных единицах перевода 2.если вы перемещаете определение в файл без заголовка, вам нужно добавить явные экземпляры статического члена для каждой комбинации аргументов шаблона
В целом, ограниченное использование объектов в качестве static
членов классашаблон.Однако вы можете создать static
функцию-член, которая вместо этого возвращает объект, например,
static TreeMapNode* nil() { static TreeMapnNode* rc(0); return rc; }
Существует много вариантов, например, для возврата ссылки или константной ссылки, и вы можете определить функцию внеопределение и т. д. Объект static
в приведенном выше коде действительно нужен, только если вы хотите вернуть ссылку на него.В противном случае вы можете просто вернуть 0
.