İşlev işaretçileri hakkında ve bunları diğer işlevler için parametre olarak kullanma hakkında okuyorum. Sorum şu; bir işlevi, işaretçileri kullanmadan nasıl referans gösterebilirdiniz? İnternetteki cevabı bulmaya çalışıyorum ama iyi bir cevap bulamadım. Değişkenleri şu şekilde referans olarak iletebileceğinizi biliyorum: void funct(int& anInt);
. Buna benzer bir şeyi nasıl yaparsınız, ancak bir değişkene yapılan bir referans yerine, bir işleve yapılan bir referans parametre miydi? Ayrıca, bir işlev gövdesindeki işlev için bir referansı nasıl kullanırsınız?C++: Referans işlevine başka bir işleve nasıl geçilir?
cevap
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
Şerefe & hth,
Sadece meraktan dolayı, neden bir işleve bir işaretçi yerine bir işleve başvurmak isterdim? – fredoverflow
@FredOverflow: Bir işaretçi geçersiz veya geçersiz olabilir. Bir başvuru geçerli ve null olmadığını (boş referans yoktur) veya programda bir hata olduğunu garanti eder. –
@Alf P. Steinbach: "ya da programda bir hata var" Bu teoride büyük kulağa hoş geliyor ama eğer sometype ve ref = * ptr gibi bir şeye sahipseniz, imlecin içindeki adres basitçe adrese kopyalanacaktır. geçerli olmayan veya boş olabilecek referansta. Yukarıdaki ifadenin "ptr" değeri geçersiz olduğunda veya null olmadığında tanımlanmamış bir davranış olduğunu söyleyebiliriz, ancak derleme veya çalışma zamanında bunun herhangi bir belirtisi olmayacaktır, bu yüzden emin olmak için programcıya kalmıştır. Bir işaretçi kullandıysanız, geçerli ve boş değil. Yani programcı için bir fark olmadığını söylüyorum. – newacct
- 1. stdio akışını başka bir işleve geçirme C++
- 2. Yapı referans ile nasıl geçilir?
- 3. işaretçiyi referans alan işleve geçirme?
- 4. Javascript: geri çağırma işlevine parametrelere nasıl geçilir
- 5. Varargs dosyasında varargs işlevini başka bir işleve nasıl geçirebilirim?
- 6. Diziyi başka bir işleve geçirin
- 7. Bir sınıfı başka bir C++ sınıfına nasıl referans gösterebilirim?
- 8. Başka bir etkinliğe byte [] listesi nasıl geçilir
- 9. Erlang, modülden başka bir parametreye nasıl geçilir
- 10. Bir dizi bas işlevine nasıl geçirilir
- 11. Bool değişkeni, bool olmayan bir işleve referans olarak nasıl iletilir?
- 12. Referans olarak bir CGFloat nasıl geçilir ve ayarlanır?
- 13. Operatör bir işleve mi geçiyor?
- 14. Bir başka işleve çift işaretçi geçirme
- 15. Başka bir işleve argüman olarak işlev JQuery
- 16. Yerel bir değişkeni PHP kullanarak başka bir işleve nasıl çağırılır
- 17. C++: normal dizi referans
- 18. bir işleve
- 19. İsim alanındaki bir işleve nasıl erişilir?
- 20. Emacs lisp'de argümanları başka bir işleve nasıl geçirirsiniz?
- 21. $ http yanıt değeri başka bir işleve nasıl iletilir?
- 22. Scala'da başka bir tane eklerken varyantik argümanlar nasıl geçilir?
- 23. mvc'de başka bir denetleyiciye yeniden yönlendirirken nasıl liste geçilir?
- 24. Julia - Anahtar kelime argümanlarını başka bir işleve mi geçirdiniz?
- 25. URL sorgu dizelerini eklenecek bir işleve geçirme
- 26. Bir vis.js ağı nasıl geçilir?
- 27. Bir parametrenin varsayılan değeri başka bir parametreye nasıl referans verebilir?
- 28. Bir öğenin referans kimliğini başka bir görünümde nasıl alabilirim - UI5
- 29. Referans belirsiz amaç-c
- 30. Bir işlev, bir sınıftaki bir işleve bir işaretçi döndürür (C++)
Not:. Sen işlevleri geçemez. Referansları veya işaretçileri yalnızca işlevlere iletebilirsiniz. –