Здравствуйте, AlexGin, Вы писали:
BFE>>Что такое "проблема перекрёстных ссылок"?
AG>BFE>>class Node
BFE>>{
BFE>>public:
BFE>> Node(const std::string& sNameOfNode); // C-tor
BFE>> ~Node(); // D-tor
BFE>> std::string GetNameOfNode() const;
BFE>> const std::vector<SubNode>& GetVectOfChilds() const;
BFE>> void AddNode(SubNode p);
BFE>>private:
BFE>> std::vector<SubNode> m_SubNodes; // Здесь ссылаемся на объект типа SubNode
BFE>>};
BFE>>
class SubNode
// Интерфейс узла:
BFE>>{
BFE>>
public:
BFE>> std::string GetNameOfNode()
const {
return m_node->GetNameOfNode(); }
BFE>>
const std::vector<SubNode>& GetVectOfChilds()
const {
return m_node->GetNameOfNode(); }
BFE>>
void AddNode(SubNode node) {
return m_node->AddNode(node); }
BFE>>
public:
BFE>> std::shared_ptr<Node> m_node;
// Здесь ссылаемся на объект типа Node
BFE>>};
BFE>>
AG>
AG>Вот отсюда и _проблема_перекрёстных_ссылок_
Нет тут никакой проблемы. Просто следует отделять декларации от имплементации, как это сделано постом выше.
AG>>так и для тестирования основы нашего проекта.
BFE>>Про связь с тестированием я не понял.
AG>>Вот насчёт тестов:
AG>>https://chromium.googlesource.com/external/github.com/google/googletest/+/refs/tags/release-1.8.0/googlemock/docs/ForDummies.md
AG>>https://chromium.googlesource.com/external/github.com/google/googletest/+/refs/tags/release-1.8.0/googlemock/docs/FrequentlyAskedQuestions.md#how-am-i-supposed-to-make-sense-of-these-horrible-template-errors
BFE>>И где конкретно у них написано, что продакшен код надо замедлять, чтобы проще было писать тесты?
AG>Кто и где предлагал замедлять продакшн код? Что есть фактор замедления?
AG>
Если приходится изменять код, чтобы подстроится под тесты, значит с тестами что-то не так.
AG>P.S. Если ты предполагаешь, что вызов через таблицу виртуальных функций (vtable) вносит замедление,
AG>то для аппаратуры последних 15 лет это уже не актуально.
Это память не актуальна, а вот скорость... Всё так же тормозят приложения и системы.