Hello,
Typedefs internes :Typedefs externes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Foo { public: using Ptr = std::shared_ptr<Foo>; using WkPtr = std::weak_ptr<Foo>; };J'avais commencé par utiliser des typedefs internes, qui me semblaient plus propres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Foo; using FooPtr = std::shared_ptr<Foo>; using FooWkPtr = std::weak_ptr<Foo>;
Puis je me suis rapidement retrouvé dans un cas d'interdépendancesDonc 2 solutions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class A { std::vector<B::Ptr> vec; }; class B { A::WkPtr a; };
- ne pas utiliser le typedef dans un des cas (ce qui me plais pas trop)
- utiliser des typedefs externes (ce qui me plais pas trop non plus, mais sur le coup ça semblait la meilleure solution)
J'ai donc utilisé des typedefs externes partout (ce qui permet pas mal de déclarations anticipées du coup)
Et puis aujourd'hui, je me retrouve avec le problème inverseCe qui relance le débat...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template <class T> struct Foo { // pourrait être // static typename T::Ptr create(sfg::Desktop& d) { // avec des typedefs internes static std::shared_ptr<T> create(sfg::Desktop& d) { auto obj = std::make_shared<T>(d); obj->setUp(); return obj; } };
C'est impossible de pouvoir utiliser des typedefs partout ?
Je suppose que du coup les typedefs internes sont une meilleure solution ?
Partager