Als «c++» getaggte Fragen

C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entwickelt und hat eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. Verwenden Sie ein versionierungsspezifisches Tag für Fragen zu einer bestimmten Standardversion [C ++ 11], [C ++ 14], [C ++ 17] oder [C ++ 20] usw.

2
Warum zerfällt ein leeres String-Literal in einem mehrdimensionalen Array in einen Nullzeiger?
Ich möchte ein mehrdimensionales C-String-Array definieren, das durch mehrere String-Literale initialisiert wird. In C würde ich folgendes tun: #include <stdio.h> const char *strArr[2][1] = { {"foo"}, {""}}; int main(void) { printf("%p\t%p\n", strArr[0][0], strArr[1][0]); return 0; } Kompilieren mit gcc -std=c18 -pedantic test.cund Ausführen von Ergebnissen in: $ ./a.out 0x55d95410f004 0x55d95410f008 …

2
Absturz beim Löschen durch Destruktor
Im folgenden Programm beabsichtige ich, char* lineInhalte von einem Objekt auf ein anderes durch zu kopieren strcpy. Wenn das Programm jedoch endet, obj2funktioniert der Destruktor von einwandfrei, der objAbsturz jedoch nicht. gdb zeigt unterschiedliche Adressen linefür beide Objekte an. class MyClass { public: char *line; MyClass() { line = 0; …
8 c++  strcpy 

2
Warum ist eine Teilklassenvorlagenspezialisierung für eine übereinstimmende Vorlagenklasse mit einer anderen Teilspezialisierung ohne Vorlagenübereinstimmung nicht eindeutig?
Die Frage mag zu schwer zu beschreiben sein, aber hier ist ein minimales Beispiel: #include <iostream> #include <type_traits> template <class T, class U, class Enabler> struct my_trait : std::false_type {}; template <class T, class U> struct my_trait<T, U, std::enable_if_t<std::is_same<T, U>::value>> : std::true_type {}; template <class T> class temped {}; template …


1
Wo ist das Rennen in diesem Thread Sanitzer Warnung?
Der folgende Code erzeugt eine Warnung, wenn er mit Thread Sanitizer unter macOS ausgeführt wird. Ich kann nicht sehen, wo das Rennen ist. Der Steuerblock von shared_ptr und schwach_ptr ist threadsicher, und das Drücken und Herausspringen von wird durch Halten std::queueeiner Sperre erfolgen. #include <future> #include <memory> #include <queue> class …


2
Vorlagen-Disambiguator für abhängige Namen
Beim Kompilieren des folgenden Beispiels ist das folgende Problem aufgetreten: template <int N> class Matrix { public: template <int Idx> int head() { return Idx; } }; template <typename T> class Test { static constexpr int RayDim = 3; public: int func() const { Matrix<RayDim> yF; return yF.head<1>(); // ^ …
8 c++ 

3
Wie kann ich verhindern, dass Benutzer einen Funktionsvorlagenparameter angeben und dessen Ableitung erzwingen?
Angenommen, ich habe eine Vorlagenfunktion: template <typename A, typename B> A fancy_cast(B) { return {}; } Die beabsichtigte Verwendung ist so etwas wie fancy_cast<int>(1.f). Nichts hindert den Benutzer jedoch daran, den zweiten Vorlagenparameter manuell anzugeben: Dies fancy_cast<int, int>(1.f)würde Probleme verursachen. Wie kann ich verhindern, typename Bdass etwas angegeben wird, und …
8 c++ 

2
Gibt es eine Möglichkeit, ein std :: any, das einen abgeleiteten Zeiger enthält, in einen Basiszeiger umzuwandeln, ohne den abgeleiteten Typ zu kennen?
Angenommen, ich habe ein std::anyObjekt, das möglicherweise einen Zeiger auf eine abgeleitete Klasse einer bestimmten Basisklasse enthält oder nicht B. Kann ich auf irgendeine Weise etwas tun, das: Gibt a zurück B *, wenn das std::anyObjekt etwas enthält, das in B *oder konvertierbar ist Wirft eine Ausnahme, wenn nicht? Es …
8 c++  stdany 

2
Wie implementiere ich die verallgemeinerte Form von std :: same_as (dh für mehr als zwei Typparameter), die unabhängig von der Parameterreihenfolge ist?
Hintergrund Wir wissen, dass das Konzept std::same_asunabhängig von der Ordnung ist (mit anderen Worten, symmetrisch): std::same_as<T, U>äquivalent zu std::same_as<U, T>( verwandte Frage ). In dieser Frage möchte ich etwas Allgemeineres implementieren: template <typename ... Types> concept same_are = ...Das prüft, ob die Typen im Paket Typesgleich sind. Mein Versuch #include …


1
Struktur mit {0} initialisieren
Ich debugge einen Code, der im Wesentlichen mit diesem identisch ist: struct Foo { int a; int b; }; struct Bar { Bar() {} Foo foo{0}; }; Wenn ich eine Instanz von mache Bar, scheint es wie beides aund bwird auf Null initialisiert. Ist das garantiert? Wo finde ich das …

2
Wie sortiere ich ein Array von Strings, die sowohl negative als auch positive Zahlen in c ++ enthalten?
String str[]={"-123","89","-10","456"}; strist ein Array von Zeichenfolgen, wobei jede Zeichenfolge das Format einer Ganzzahl hat, und Sie müssen dieses Array O(n log n)rechtzeitig sortieren . Die Zeichenfolgen in strkönnen sowohl positive als auch negative Ganzzahlen darstellen. Die maximale Länge dieser Zeichenfolgen beträgt 1024 Zeichen. Ich weiß, dass eine Lösung dieses …

1
Ist es möglich, in einer using-Deklaration auf eine benutzerdefinierte Konvertierungsvorlage zu verweisen?
In einer Klasse, Bdie von einer Klasse erbt A, ist es möglich, eine usingDeklaration zu verwenden, um Mitglieder Ain Bsogar Vorlagen wie diese zu bringen: struct A { template <typename T> void foo(); }; struct B : private A { using A::foo; }; Aber kann es für Konvertierungsvorlagen gemacht werden? …

1
Kann ein Compiler die Implementierung eines implizit deklarierten virtuellen Destruktors in einer einzelnen separaten Übersetzungseinheit platzieren?
Der folgende Code kompiliert und verknüpft mit Visual Studio(sowohl 2017 als auch 2019 mit /permissive-), kompiliert jedoch nicht mit entweder gccoder clang. foo.h #include <memory> struct Base { virtual ~Base() = default; // (1) }; struct Foo : public Base { Foo(); // (2) struct Bar; std::unique_ptr<Bar> bar_; }; foo.cpp …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.