Ich bin neu bei der Verwendung von gemeinsamen und eindeutigen Zeigern, und ich versuche, eine Verknüpfte Liste mit freigegebenen Zeigern zu machen, jedoch stürzt mein Programm zufällig ab.C++ make_shared und .get()
Bitte senden Sie mir nützliche Ratschläge und/oder Links Bücher zu meinem besseren Verständnis zu lesen, das ist eine neue C++ Funktion für mich.
Ich versuche, die LeetCode Frage https://leetcode.com/problems/add-two-numbers/description/
Und die API erfordert ListNode * zu lösen übergeben als Argumente werden, so versuche ich, nur ein paar Testdaten zu erstellen, ohne nackt neu mit ...
Zufällige Abstürze auftreten, können make_shared:
int main(int argc, const char * argv[]) {
ListNode* list1 = (make_shared<ListNode>(2)).get();
list1->next = (make_shared<ListNode>(4)).get();
list1->next->next = (make_shared<ListNode>(3)).get();
ListNode* list2 = (make_shared<ListNode>(5)).get();
list2->next = (make_shared<ListNode>(6)).get();
list2->next->next = (make_shared<ListNode>(4)).get();
Solution solution;
ListNode* result = solution.addTwoNumbers(list1, list2);
Dies funktioniert OK:
int main(int argc, const char * argv[]) {
ListNode* list1 = new ListNode(2);
list1->next = new ListNode(4);
list1->next->next = new ListNode(3);
ListNode* list2 = new ListNode(5);
list2->next = new ListNode(6);
list2->next->next = new ListNode(4);
Solution solution;
ListNode* result = solution.addTwoNumbers(list1, list2);
Was werden Sie von 'make_shared zu erreichen versuchen (...) get()'.? – melpomene