2010-05-04 17 views
6
Ben C yapabilir miyim

C++, değişken örnekleme olmadan çalışmaya geçmesi için: Ben başlatmasını olmadan, çalışması için bir dizi geçirmek istediğinizdizi (evet, sözdizimi ise?) ++

void func(string* strs) { 
    // do something 
} 
func({"abc", "cde"}); 

bir değişken olarak. Önerileriniz için teşekkürler.

cevap

9

Geçerli C++, C++ 03 ile tanımlandığı gibi yapılamaz.

Aradığınız özellik "bileşik literals" olarak adlandırılır. C99'da C99 ile tanımlandığı gibi (C'ye özgü yeteneklerle birlikte), fakat C++ 'da değil.

Benzer bir özellik de C++ için planlandı, ancak henüz yok.

0

Bunu C++ 98'de yapabileceğinizi sanmıyorum, ancak C++ 1x'te initializer_lists ile yapabilirsiniz.

+0

seni çok initializer_lists seviyorum. –

0

Yazılı olarak, bunu yapamazsınız. İşlev bir işaretçiden dizeye bekler. Bir diziyi bir değişmez olarak iletebilseniz bile, işlev çağrısı hatalar üretebilir çünkü değişmezler sabit olarak kabul edilir (bu nedenle, işlev dizisi, işlev beklendiği gibi, değil string* olacaktır).

+0

Bir değişken oluşturmazsam, hala bir işaretçi (adres) vardır. – yegor256

+0

Yanıt veren – bta

0

Sınırsız türlenmemiş bilgileri bir işleve aktarmak için değişken bir işlev kullanın. Sonra, veri içinde geçirilen, iç diziye doldurma gibi ne yaparsanız yapın.

variadic function

İlgili konular