Информация об изменениях

Сообщение Re[8]: бессмысленные интерфейсы от 21.02.2022 19:36

Изменено 21.02.2022 19:37 AlexGin

Re[8]: бессмысленные интерфейсы
Здравствуйте, B0FEE664, Вы писали:

BFE>Что такое "проблема перекрёстных ссылок"?


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>

Вот отсюда и _проблема_перекрёстных_ссылок_

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

Вообще-то я и без копиляции увидел у тебя проблему перекрёстных ссылок.
Однако, на всякий случай, лишний раз убедился — что у тебя ошибка.

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

BFE>class Node;

BFE>class SubNode // Интерфейс узла:
BFE>{
BFE>public:
BFE>    inline std::string                 GetNameOfNode() const     ;
BFE>    inline const std::vector<SubNode>& GetVectOfChilds() const   ;
BFE>    inline void                        AddNode(SubNode node)     ;
BFE>public:
BFE>    std::shared_ptr<Node> m_node; // Здесь компилятор НЕ ЗНАЕТ размер объекта типа Node
        // Ссылка или указатель на объект типа Node здесь прокатят, значение - НЕТ
BFE>};


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>



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>И где конкретно у них написано, что продакшен код надо замедлять, чтобы проще было писать тесты?

Кто и где предлагал замедлять продакшн код?
Re[8]: бессмысленные интерфейсы
Здравствуйте, B0FEE664, Вы писали:

BFE>Что такое "проблема перекрёстных ссылок"?

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>

Вот отсюда и _проблема_перекрёстных_ссылок_

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

Вообще-то я и без копиляции увидел у тебя проблему перекрёстных ссылок.
Однако, на всякий случай, лишний раз убедился — что у тебя ошибка.

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

BFE>class Node;

BFE>class SubNode // Интерфейс узла:
BFE>{
BFE>public:
BFE>    inline std::string                 GetNameOfNode() const     ;
BFE>    inline const std::vector<SubNode>& GetVectOfChilds() const   ;
BFE>    inline void                        AddNode(SubNode node)     ;
BFE>public:
BFE>    std::shared_ptr<Node> m_node; // Здесь компилятор НЕ ЗНАЕТ размер объекта типа Node
        // Ссылка или указатель на объект типа Node здесь прокатят, значение - НЕТ
BFE>};


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>



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>И где конкретно у них написано, что продакшен код надо замедлять, чтобы проще было писать тесты?

Кто и где предлагал замедлять продакшн код?