class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Bunun nedeninin dizilerin yalnızca =sözdizimi ile başlatılabileceğine inanıyorum , yani: int arr[3] = {1,3,4}; Sorular Yapmak istediğim şeyi nasıl yapabilirim (yani, bir yapıcıda bir diziyi başlatmak (gövdeye …
Elemanları a'nın dışına taşımama izin var std::initializer_list<T>mı? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } Yana std::intializer_list<T>özel derleyici dikkat gerektiren ve C ++ standardı kütüphanesinde normal kaplarda gibi değer anlambilim yok, ben daha …
Neden std::initializer_listbir çekirdek dil yerleşik değil ? Bana öyle geliyor ki, C ++ 11'in oldukça önemli bir özelliği ve yine de kendi ayrılmış anahtar kelimesine (veya benzer bir şeye) sahip değil. Bunun yerine, initializer_listbu kadar sadece özel, örtülü sahiptir standart kütüphaneden bir şablon sınıfı eşlemesi yeni gelen hazırladı-init-liste {...} derleyici …
C ++ 11'de, sınıfları başlatmak için, değişkenleri nasıl başlatacağımız konusunda bize çok sayıda olasılık veren yeni sözdizimimiz var. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = …
Varsa, std::mapgenişletilmiş bir başlatıcı listesi nasıl görünür? GCC 4.4 ile düşünebildiğim her şeyi ... bazı kombinasyonlarını denedim, ancak derlenen hiçbir şey bulamadım.
Her ikisi de aynı işlev çağrısına dayalı olarak başlatılması gereken iki farklı sabit üye değişkenim varsa, işlevi iki kez çağırmadan bunu yapmanın bir yolu var mı? Örneğin pay ve payda sabit olan bir kesir sınıfı. int gcd(int a, int b); // Greatest Common Divisor class Fraction { public: // Lets …
Aşağıdaki gelmez değil derlemek: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Godbolt üzerinde dene Derleyici hatası: error: assignment of read-only reference 's' Şimdi benim gerçek durumumda liste bir sınıftaki …