C++通过引用传递变量(SFML窗口)

C++ passing variable by reference (SFML window)

本文关键字:SFML 窗口 变量 引用 C++      更新时间:2023-10-16

通过引用传递变量时遇到问题。我试着在课堂上的SFML窗口中画一些东西,但它画不出来。如果我取消对注释行的注释,它会起作用。我做错了什么?

#pragma once
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include "ball.h"
int _tmain(int argc, _TCHAR* argv[])
{
  sf::RenderWindow window = sf::RenderWindow( sf::VideoMode( 640, 480 ), "SFML window" );
  ball my_ball = ball ( sf::Vector2f( 320.0, 240.0 ) );
  window.clear();
  my_ball.draw(window);
  //sf::CircleShape circle;
  //circle.setRadius( 30 );
  //circle.setPosition( sf::Vector2f( 320.0, 240.0 ) );
  //window.draw( circle );
  window.display();
  while(window.isOpen()) {
    sf::Event event;
    while( window.pollEvent(event) ){
      if( event.type == sf::Event::Closed ){
        window.close();
      } 
    }
    sf::sleep( sf::milliseconds( 20 ) );
  }
  return 0;
}

ball.h

#include <SFML/Graphics.hpp>
class ball
{
  public:
    ball( sf::Vector2f position, float size = 30.0 );
    void draw( sf::RenderWindow & window ) const;
  private:
   sf::Vector2f position;
   float size;
  };

ball.cpp

#include "StdAfx.h"
#include "ball.h"
ball::ball( sf::Vector2f position, float size ) {
  position = position;
  size = size;
}
void ball::draw( sf::RenderWindow & window ) const {
  sf::CircleShape circle;
  circle.setRadius( size );
  circle.setPosition( position );
  window.draw( circle );
}

为什么要将它们分配给自己?错了

ball::ball( sf::Vector2f position, float size ) {
  position = position;
  size = size;
}