Re[7]: бессмысленные интерфейсы
От: B0FEE664  
Дата: 21.02.22 12:20
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Прекрасно!

AG>У нас уже (с Вашей подачи) — две равнозначные сущности.
AG>Там, напомним, где в принципе достаточно одной (плюс вспомогательная: интерфейс).

Хотите одну? Вот вам одна сущность:
class node
{
  std::vector<std::shared_ptr<node>> childs;
};


AG>Я вот посмотрел и подумал — есть Node, есть SubNode.

AG>Есть Forward Declaration, которое так и не решило проблему перекрёстных ссылок.
Что такое "проблема перекрёстных ссылок"?

AG>Зачем так сложно?

Не знаю. Чем простой вариант устраивает?

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

Ну вы же сами хотели ограничить связность.

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

Вы это пытались компилировать? Зачем?

  Скрытый текст
#include <iostream>
#include <vector>
#include <memory>
#include <string>

class Node;

class SubNode // Интерфейс узла:
{
public:
    inline std::string                 GetNameOfNode() const     ;
    inline const std::vector<SubNode>& GetVectOfChilds() const   ;
    inline void                        AddNode(SubNode node)     ;
public:
    std::shared_ptr<Node> m_node;
};


class Node
{
public:
    Node(const std::string& sNameOfNode); // C-tor
   ~Node(); // D-tor
    std::string GetNameOfNode() const;
    const std::vector<SubNode>& GetVectOfChilds() const;
    void AddNode(SubNode p);
private:
    std::vector<SubNode> m_SubNodes;
};




    inline std::string                 SubNode::GetNameOfNode() const     {  return m_node->GetNameOfNode();  }
    inline const std::vector<SubNode>& SubNode::GetVectOfChilds() const   {  return m_node->GetVectOfChilds();  }
    inline void                        SubNode::AddNode(SubNode node)     {  return m_node->AddNode(node);    }        


int main() {
    std::cout << "ok\n";
    // your code goes here
    return 0;
}


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

И где конкретно у них написано, что продакшен код надо замедлять, чтобы проще было писать тесты?
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.