Re[6]: бессмысленные интерфейсы
От: AlexGin Беларусь  
Дата: 19.02.22 19:04
Оценка:
Здравствуйте, уважаемый B0FEE664, Вы писали:

BFE>Для того, чтобы уменьшить связность, виртуальные методы не нужны:

BFE>
BFE>class SubNode;

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;
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;
BFE>};
BFE>


Прекрасно!
У нас уже (с Вашей подачи) — две равнозначные сущности.
Там, напомним, где в принципе достаточно одной (плюс вспомогательная: интерфейс).
Я вот посмотрел и подумал — есть Node, есть SubNode.
Есть Forward Declaration, которое так и не решило проблему перекрёстных ссылок.

Зачем так сложно?
Почему так не-KISS-ло всё накручено?

Неудивительно, что это всё даже не компилируется

AG>>так и для тестирования основы нашего проекта.

BFE>Про связь с тестированием я не понял.

Вот насчёт тестов:
https://chromium.googlesource.com/external/github.com/google/googletest/+/refs/tags/release-1.8.0/googlemock/docs/ForDummies.md
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.