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

时间:2014-09-09 19:39:37

标签: c++ pass-by-reference sfml

我有一个通过引用传递变量的问题。我尝试在类中的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 );
}

1 个答案:

答案 0 :(得分:3)

你为什么要把这些分配给自己?那是错的

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