Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML2.1] Bezsensowne błędy kompilacji

Ostatnio zmodyfikowano 2014-08-22 19:13
Autor Wiadomość
Witold
Temat założony przez niniejszego użytkownika
[SFML2.1] Bezsensowne błędy kompilacji
» 2014-08-22 17:38:14
Nie bardzo wiem co napisać bo błędy są bezsensowne, więc dam prosty kod i log jego kompilacji.
Ktoś mógłby mnie oświecić o co chodzi?

C/C++
#include <SFML/Graphics.hpp>

int main()
{
    //sf::Vector2f size(32,32);
    //sf::Vector2<double> size(32,32);
    //sf::Vector2u size(32,32);
    sf::Vector2i size( 32, 32 );
   
    sf::RectangleShape rc( sf::Vector2f( size ) );
    rc.setPosition( 0, 0 );
    rc.getPosition();
    rc.setRotation( 11 );
    rc.getRotation();
    rc.getFillColor();
   
    return 0;
}


-------------- Build: Debug in sfTests (compiler: i686-4.9.0-release-posix-sjlj-rt_v3-rev2)---------------

i686-w64-mingw32-g++.exe -Wall -g -ID:\CB\SFML-2.1\include -ID:\CB\shared\include -c D:\rar\cpp\sfTests\main.cpp -o obj\Debug\main.o
D:\rar\cpp\sfTests\main.cpp: In function 'int main()':
D:\rar\cpp\sfTests\main.cpp:11:8: error: request for member 'setPosition' in 'rc', which is of non-class type 'sf::RectangleShape(sf::Vector2f) {aka sf::RectangleShape(sf::Vector2<float>)}'
     rc.setPosition(0,0);
        ^
D:\rar\cpp\sfTests\main.cpp:12:8: error: request for member 'getPosition' in 'rc', which is of non-class type 'sf::RectangleShape(sf::Vector2f) {aka sf::RectangleShape(sf::Vector2<float>)}'
     rc.getPosition();
        ^
D:\rar\cpp\sfTests\main.cpp:13:8: error: request for member 'setRotation' in 'rc', which is of non-class type 'sf::RectangleShape(sf::Vector2f) {aka sf::RectangleShape(sf::Vector2<float>)}'
     rc.setRotation(11);
        ^
D:\rar\cpp\sfTests\main.cpp:14:8: error: request for member 'getRotation' in 'rc', which is of non-class type 'sf::RectangleShape(sf::Vector2f) {aka sf::RectangleShape(sf::Vector2<float>)}'
     rc.getRotation();
        ^
D:\rar\cpp\sfTests\main.cpp:15:8: error: request for member 'getFillColor' in 'rc', which is of non-class type 'sf::RectangleShape(sf::Vector2f) {aka sf::RectangleShape(sf::Vector2<float>)}'
     rc.getFillColor();
        ^
Process terminated with status 1 (0 minute(s), 1 second(s))
5 error(s), 0 warning(s) (0 minute(s), 1 second(s))
 
P-115960
pekfos
» 2014-08-22 17:42:40
C/C++
sf::RectangleShape rc { sf::Vector2f( size ) };
//lub
sf::RectangleShape rc(( sf::Vector2f( size ) ) );
P-115961
Witold
Temat założony przez niniejszego użytkownika
» 2014-08-22 17:50:59
Dzięki za szybką odpowiedż, pytanie czemu mój sposób nie działa?
P-115962
pekfos
» 2014-08-22 17:53:14
Bo twój zapis został potraktowany jako deklaracja funkcji, a nie definicja obiektu.
P-115963
Witold
Temat założony przez niniejszego użytkownika
» 2014-08-22 18:18:49
Zupełnie nie mogę dojśc do tego jak kompilator mógł potraktować to jako funkcję i z jakiego powodu to interpretuje inaczej.
C/C++
sf::RectangleShape rc( sf::Vector2f( size.x, size.y ) );
P-115966
czosnek17
» 2014-08-22 18:28:07
C/C++
sf::RectangleShape rc( sf::Vector2f( size.x, size.y ) );
void nazwa( argumenty );
To jest funkcja typu RectangleShape o nazwie rc z argumentem Vector2f.
Musisz użyć konstruktora(obiektu tymczasowego i go przypisać do rc).
P-115967
Witold
Temat założony przez niniejszego użytkownika
» 2014-08-22 18:49:50
@czosnek17
Chyba się nie zrozumieliśmy:)

to działa:
C/C++
sf::RectangleShape rc( sf::Vector2f( size.x, size.y ) );
a to nie działa:
C/C++
sf::RectangleShape rc( sf::Vector2f( size ) );

I nie mogę dojść czym się różnią oba zapisy.
P-115968
Glazus
» 2014-08-22 19:13:15
Bo
sf::Vector2f( float, float )
 przyjmuje dwa argumenty. Nie możesz w ten sposób zastąpić dwóch zmiennych w zapisie. Zresztą popatrz na bezsens tego, co starasz się osiągnąć. Jak koniecznie chcesz to robić w ten sposób, to tak:
C/C++
sf::Vector2f size( 32, 32 );

sf::RectangleShape rc( size );
P-115969
« 1 »
  Strona 1 z 1