Articles of conception

Modèle de spécialisation partielle – un exemple concret?

Je réfléchis à partial specialization . Bien que je comprenne l’idée, je n’ai encore vu aucune utilisation réelle de cette technique. Full specialization est utilisée dans de nombreux endroits de la STL donc cela ne me pose pas de problème. Pourriez-vous me renseigner sur un exemple partial specialization lequel partial specialization est utilisée? Si l’exemple […]

Conception d’un modèle de conteneur de pointeur

J’aimerais écrire une classe “polyvalente” représentant le conteneur général stockant des pointeurs. Devrais-je utiliser l’inheritance public ou le confinement? template class List : public std::vector { //… } Ou template class List { private: std::vector items; //… } Certains problèmes peuvent-ils survenir avec les classes abstraites (destructeur virtuel, par exemple)? Si aucune proposition n’est appropriée, […]

Confusion concernant boost :: shared_ptr

Ma question porte sur le sharepoint savoir si je dois ou non exposer mon utilisation de boost :: shared_ptr depuis mon interface et si je dois ou non exposer des pointeurs ou des références bruts depuis mon interface. Prenons le cas d’une personne qui a un employeur . Employeur gère en interne tous ses employés […]

Héritage et utilisation de dynamic_cast

Supposons que j’ai 3 classes comme suit (comme c’est un exemple, ça ne comstackra pas!): class Base { public: Base(){} virtual ~Base(){} virtual void DoSomething() = 0; virtual void DoSomethingElse() = 0; }; class Derived1 { public: Derived1(){} virtual ~Derived1(){} virtual void DoSomething(){ … } virtual void DoSomethingElse(){ … } virtual void SpecialD1DoSomething{ … } […]

Comment limiter la visibilité d’une classe en dehors de l’espace de noms dans lequel elle est déclarée?

J’ai un espace de noms en c ++ qui contient 5 classes. Tous ont un modificateur d’access public . Deux de ces classes sont static classes static . Je souhaite limiter la visibilité de ces classes en dehors de l’espace de noms dans lequel elles sont déclarées. Donc, comme dans un autre espace de noms, […]

C ++ Namespaces & templates

Certaines fonctions peuvent être regroupées, mais n’appartiennent pas à un object / entité et ne peuvent donc pas être traitées comme des méthodes. Donc, fondamentalement, dans cette situation, je créerais un nouvel espace de noms et placerais les définitions dans un fichier d’en- header , l’implémentation dans un fichier cpp . De plus (si nécessaire), […]

Devrais-je utiliser des extensions SIMD ou vectorielles ou autre chose?

Je développe actuellement un framework d’application 3D open source en c ++ (avec c ++ 11 ). Ma propre bibliothèque mathématique est conçue comme la bibliothèque mathématique XNA , également dans l’esprit SIMD . Mais actuellement, il n’est pas très rapide et il a des problèmes de mémoire, mais plus à ce sujet dans une […]

Les destructeurs doivent-ils être threadsafe?

Je parcourais un code hérité et j’ai trouvé l’extrait suivant: MyClass::~MyClass() { EnterCriticalSection(&cs); //Access Data Members, **NO Global** members are being accessed here LeaveCriticalSection(&cs); } Je me demande si cela aidera par quelque moyen que ce soit de garder le destructeur? Considérons un scénario: 1. Thread1 – About to execute any of the member function […]

A quoi sert de passer des références const à des types primitifs?

Dans un projet que je gère, je vois beaucoup de code comme celui-ci pour des méthodes simples get / set const int & MyClass::getFoo() { return m_foo; } void MyClass::setFoo(const int & foo) { m_foo = foo; } Quel est l’intérêt de faire cela au lieu de ce qui suit? int MyClass::getFoo() { return m_foo; […]

C ++: Ce modèle a-t-il un nom et peut-il être amélioré?

La motivation Disons que j’écris une classe Tree . Je vais représenter les nœuds de l’arbre par une classe Tree::Node . Les méthodes de la classe peuvent renvoyer des objects Tree::Node et les prendre en arguments, par exemple une méthode qui obtient le parent d’un nœud: Node getParent(Node) . Je veux aussi un cours SpecialTree […]