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