J’ai une liste liée et actuellement mon destructeur ne fonctionne pas correctement. Pas tout à fait sûr pourquoi. Quelqu’un peut-il m’expliquer comment résoudre ce problème? class linked_list { private: struct node { // Ssortingng in this node std::ssortingng data; // Pointer to next node struct node *next; }; //First item in the list struct node […]
Voici mon code de test: #include #include using namespace std; class List { private: class Node{ public: int data; Node* next; public: virtual ~Node() { if (next != NULL) { cout << "Node is out: " << data < data = data; if (head == NULL) { head = temp; } else { Node* ptr […]
Considérons le code: class A { public: virtual ~A() {} }; class B : public A { public: ~B() {} }; void main () { A * array = new A[100]; delete array; } Sous Windows (MSVC 2010), il provoque une exception car delete appelle HeapValidate , ce qui indique que le HeapValidate est corrompu. […]
Le programme suivant … int main() { int{1}.~int(); } ne comstack pas sur (voir visualiseur de conformité ) : clang ++ trunk, avec -std=c++1z Tronc g ++, avec -std=c++1z CL 19 2017 Introduisant un alias de type pour int … int main() { using X = int; int{1}.~X(); } … rend le programme valide sur […]
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 […]
Je viens de mettre en œuvre la liste chaînée. Cela fonctionne parfaitement bien, même si j’ai vu la notation, je suis incapable de créer un destructeur de travail sur Node, c’est pourquoi il n’est pas implémenté ici dans le code. J’ai besoin d’implémenter un destructeur de travail sur le noeud Destructor of List mais celui-ci […]
Son problème est similaire à celui de ce bug Question sur le stockage d’un tableau dans un std :: vector en C ++ mais pour une raison différente (voir ci-dessous). Pour l’exemple de programme suivant en C ++: #include int main(int c_, char ** v_) { const int LENGTH = 100; std::vector ca_vector; return 0; […]
J’essayais d ‘écrire une classe masortingcielle pouvant trouver inverse, adjoint, etc. d’une masortingce carrée de tout ordre. Le constructeur initialise une masortingce d’identité d’ordre n (qui lui est transmise). class Masortingx { int** elements; int order; public: Masortingx& operator=(const Masortingx& second_inp) { if(this->order!=second_inp.order) cout<<"The matrix cannot be assigned!!!\n"<order<<"\n"<<second_inp.order; else { for(int i=0;iorder;i++) for(int j=0;jorder;j++) this->elements[i][j] […]
J’ai cet arrangement: class LexedFile { friend class Lex; //… private: ~LexedFile(); }; class Lex { //… private: std::map<std::string, std::unique_ptr > Files; }; Un Lex est le seul créateur d’objects LexedFile et conserve la propriété de tous les objects LexedFile qu’il crée dans une carte. Malheureusement, le compilateur se plaint fort à ce sujet en […]
Après avoir lu quelques tutoriels, je ne suis toujours pas clair sur certains points concernant la gestion de la mémoire en C ++. 1. lorsqu’une classe déclarée avec l’opérateur new sort du domaine, son destructeur est-il appelé et la mémoire libérée? Est-il nécessaire d’appeler l’opérateur delete pour libérer la mémoire de la classe et faire […]