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? #include <SFML/Graphics.hpp>
int main() { 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))
|
|
pekfos |
» 2014-08-22 17:42:40 sf::RectangleShape rc { sf::Vector2f( size ) };
sf::RectangleShape rc(( sf::Vector2f( size ) ) ); |
|
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? |
|
pekfos |
» 2014-08-22 17:53:14 Bo twój zapis został potraktowany jako deklaracja funkcji, a nie definicja obiektu. |
|
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. sf::RectangleShape rc( sf::Vector2f( size.x, size.y ) );
|
|
czosnek17 |
» 2014-08-22 18:28:07 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). |
|
Witold Temat założony przez niniejszego użytkownika |
» 2014-08-22 18:49:50 @czosnek17 Chyba się nie zrozumieliśmy:) to działa: sf::RectangleShape rc( sf::Vector2f( size.x, size.y ) );
a to nie działa: sf::RectangleShape rc( sf::Vector2f( size ) );
I nie mogę dojść czym się różnią oba zapisy. |
|
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: sf::Vector2f size( 32, 32 );
sf::RectangleShape rc( size ); |
|
« 1 » |