Şu anda bir 3D motor, bir fizik motoru ve bir betik dili arasındaki değerleri taşıması gereken bir oyun "motoru" üzerinde çalışıyorum. Fizik motorundan vektörleri çok sık 3D nesnelere uyguladığımdan ve hem 3B'yi hem de fizik objelerini komut dosyası aracılığıyla kontrol edebilmem gerektiğinden, bir türden bir vektörü dönüştürmek için bir mekanizmaya ihtiyacım var. vector3d<float>
) diğer tipteki bir vektöre (ör. btVector3
). Ne yazık ki, sınıfların/yapıların nasıl düzenlendiği konusunda hiçbir varsayımda bulunamıyorum, bu yüzden reinterpret_cast
basit bir şekilde yapılmayacaktır.Üye olmayan dönüşüm işlevleri; Farklı türleri dökmek, ör. OpenGL vektörüne DirectX vektör
Yani soru şu: Şu anda döküm operatörler üye yöntemleri olması gerekiyor çünkü bu derlenmeyecektir
vector3d<float> operator vector3d<float>(btVector3 vector) {
// convert and return
}
btVector3 operator btVector3(vector3d<float> vector) {
// convert and return
}
: temelde bunu başarmak için/üye olmayan döküm yöntemiyle 'statik' bir çeşit var mı . (error C2801: 'operator foo' must be a non-static member
)
Teşekkür Adam! Şu an bunu yapıyorum. Derleyicinin işi yapmasının mümkün olup olmadığını merak ediyorum. "Eğer oraya gitmek istiyorsan, önce oraya git" gibi bir şey. – sunside
Anladım. Bu çözüm en doğrudan bana benzese de, başka bir cevapta başka bir olasılık daha ekledim. –
Ücretsiz işlevlerle devam edin. Kapalı dönüşümler, genellikle makul olduklarında bile gitmek için kötü bir yoldur. – jalf