Derleme zamanında bir dizi dizi oluşturmanın kolay bir yolunu arıyorum. Ben başarıyla böyle bir kod derlemek bu kullanmaVirgül operatörünü kötüye kullanma
Strings();
Strings(const Strings& that);
Strings(const char* s1);
Strings& operator=(const char* s1);
Strings& operator,(const char* s2);
:
Strings s;
s="Hello","World!";
s="Hello"
parçası döndüren operator=
çağıran bir test için, aşağıdaki üyesi vardır Strings
adında bir sınıf araya Strings&
ve ardından operator,
, "World!"
için çağrılır. Ben (MSVC, henüz başka derleyiciler denemedim) işe alınamıyor ne
olduğunu
Strings s="Hello","World!";
Ben Strings s="Hello"
kopya kurucu çağırır ve sonra her şey hareket ettiği buraya varsaymak istiyorum ilk örnekle aynı. Ama hatayı alıyorum: error C2059: syntax error : 'string'
Ancak bu iyi çalışır:
Strings s="Hello";
Yani kopya yapıcı bir dize için en az çalışır biliyoruz. Herhangi bir fikir? Kodun biraz daha temiz olmasını sağlamak için ikinci yöntemin çalışmasını gerçekten çok isterim.
Wow, virgül operatörünün aşırı yüklenmesiyle ilgili çok fazla şaka duydum. Asla birisinin aslında ** yapmasını beklemiyordum. –
@Carl: (şey OP istediği çok benzeri) – UncleBens
* titreme * Kendi içinde çivi koymak http://www.boost.org/doc/libs/1_40_0/libs/assign/doc/index.html#intro hakkında ne tabut. Yanlış gitmeye başladığında nasıl hata ayıklayacaksınız? –