के साथ अजीब बग सबसे पहले, अगर उत्तर स्पष्ट है तो मैं पहले से माफ़ी मांगना चाहता हूं; मैं सी ++ के लिए बहुत नया हूं और मेरी पहली भाषा जावा है। मैं स्टैक ओवरफ्लो के लिए भी नया हूं, इसलिए यदि मेरे प्रश्न में कुछ गड़बड़ है या आपको कुछ और चाहिए, तो कृपया मुझे बताएं।डिफ़ॉल्ट कन्स्ट्रक्टर (सी ++)
तो। मैं यहाँ कोड के इस टुकड़े है:
Ball::Ball() {
// This ugly thing calls the full constructor with a random x and y position
// in such a way the the entire ball is inside the screen.
Ball::Ball((rand() % (WINDOW_X - (2 * BALL_RADIUS))) + BALL_RADIUS, (rand() % (WINDOW_Y - (2 * BALL_RADIUS))) + BALL_RADIUS);
}
Ball::Ball(float x, float y) {
loc.x = x;
loc.y = y;
ball.setPosition(loc.x - BALL_RADIUS, loc.y - BALL_RADIUS);
ball.setRadius(BALL_RADIUS);
ball.setFillColor(sf::Color::Red);
ball.setOutlineColor(sf::Color::Black);
ball.setOutlineThickness(1);
}
(मैं वेक्टर और CircleShape के लिए SFML उपयोग कर रहा हूँ) और यहाँ है हैडर (ऊपर फाइल में #included):
class Ball {
private:
sf::CircleShape ball;
sf::Vector2f loc;
sf::Vector2f vel;
sf::Vector2f acc;
void update();
void bounce();
void draw();
public:
Ball();
Ball(float x, float y);
void run();
};
जब मैं
Ball ball;
(और हाँ, सभी एसएफएमएल प्रतिपादन सामग्री काम करता है) के साथ गेंद बनाएं, यह कभी नहीं दिखाता है। कुछ जांच से पता चलता है कि इसका loc.x और loc.y चर सेट नहीं हैं, और शायद, न ही गेंद ऑब्जेक्ट का त्रिज्या, fillcolor, आदि हैं। यदि मैं इनके मानों को std :: cout के अंदर कन्स्ट्रक्टर, loc.x और loc.y और अन्य सभी सेट के साथ मानों को प्रिंट करता हूं, तो मुझे लगता है कि वे कन्स्ट्रक्टर के बाद कहीं भी अनसेट हो जाते हैं। क्या अजीब बात है कि अगर मैं
Ball ball((rand() % (WINDOW_X - (2 * BALL_RADIUS))) + BALL_RADIUS, (rand() % (WINDOW_Y - (2 * BALL_RADIUS))) + BALL_RADIUS);
या यहाँ तक कि
Ball ball(400, 300);
सब कुछ के साथ गेंद को बनाने के लिए पूरी तरह से काम करता है, और गेंद के लिए स्क्रीन पर दिखाई दें। मैं वास्तव में स्टंप लोगों हूँ। अगर कोई मेरी मदद कर सकता है, तो यह बहुत अच्छा होगा।
बीटीडब्ल्यू, मैं एक्सकोड 4.5.2 के साथ ओएस एक्स 10.8 चला रहा हूं, और एसएफएमएल आरसी 2.0 का उपयोग कर रहा हूं, अगर इससे कोई फर्क पड़ता है।
धन्यवाद,
मैट
इतनी जल्दी प्रतिक्रिया देने के लिए सभी को धन्यवाद! मैं दोनों रचनाकारों द्वारा बुलाए गए एक init() फ़ंक्शन का निर्माण करूंगा, जैसा कि ऐसा करने का सबसे अच्छा तरीका है जो मैं करना चाहता हूं। जावा से सी ++ में जाने से हेला भ्रमित है। – SlEePlEs5