Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Error30error C2589: '(' : illegal token on right side of '::' Please help  (Read 11532 times)

0 Members and 1 Guest are viewing this topic.

Serilda

  • Guest


#define NOMINMAX

#include "stdafx.h"
#include <vector>
#include <limits>

#include "Win32Project1.h"

#include <SFML/Graphics.hpp>
#include <iostream>

bool intersects(const sf::RectangleShape & r1, const sf::RectangleShape & r2){
        sf::FloatRect snake = r1.getGlobalBounds();
        sf::FloatRect spawnedFruit = r2.getGlobalBounds();
        return snake.intersects(spawnedFruit);

}

sf::RectangleShape generateFruit() {


        sf::RectangleShape fruit;
        fruit.setFillColor(sf::Color::Yellow);
        int fruitx = rand() % 400;
        int fruity = rand() % 400;
        fruit.setPosition(fruitx, fruity);
        fruit.setSize(sf::Vector2f(5, 5));

        return fruit;


}
int main()
{
        srand(time(NULL));
        int width = 400;
        int height = 400;
        sf::VideoMode videomode(width, height);
        sf::RenderWindow window(videomode, "Snake");
        sf::RectangleShape snake;

        snake.setFillColor(sf::Color::Red);
        snake.setSize(sf::Vector2f(20, 20));
        snake.setPosition(100, 100);
        sf::Clock clock;
        sf::Time t1 = sf::seconds(20);
        sf::RectangleShape spawnedFruit;
        while (window.isOpen()) {
                window.clear();
                window.draw(snake);



                sf::Time elapsed1 = clock.getElapsedTime();
                if (elapsed1 >= t1) {


                        spawnedFruit = generateFruit();

                        clock.restart();

                }

                window.draw(spawnedFruit);

                window.display();
                sf::Event event;
                while (window.pollEvent(event))
                {
                        if ((event.type == sf::Event::Closed) ||
                                ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)))
                                window.close();
                }


                if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))

                        snake.move(0, -0.1);
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
                        snake.move(0, 0.1);
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
                        snake.move(-0.1, 0);
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
                        snake.move(0.1, 0);
                if (intersects(snake, spawnedFruit))
                        std::cout << "Intersects";





        }

}
 

Rect.inl:-
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it freely,
// subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented;
//    you must not claim that you wrote the original software.
//    If you use this software in a product, an acknowledgment
//    in the product documentation would be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such,
//    and must not be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
//
////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////
template <typename T>
Rect<T>::Rect() :
left  (0),
top   (0),
width (0),
height(0)
{

}


////////////////////////////////////////////////////////////
template <typename T>
Rect<T>::Rect(T rectLeft, T rectTop, T rectWidth, T rectHeight) :
left  (rectLeft),
top   (rectTop),
width (rectWidth),
height(rectHeight)
{

}


////////////////////////////////////////////////////////////
template <typename T>
Rect<T>::Rect(const Vector2<T>& position, const Vector2<T>& size) :
left  (position.x),
top   (position.y),
width (size.x),
height(size.y)
{

}


////////////////////////////////////////////////////////////
template <typename T>
template <typename U>
Rect<T>::Rect(const Rect<U>& rectangle) :
left  (static_cast<T>(rectangle.left)),
top   (static_cast<T>(rectangle.top)),
width (static_cast<T>(rectangle.width)),
height(static_cast<T>(rectangle.height))
{
}


////////////////////////////////////////////////////////////
template <typename T>
bool Rect<T>::contains(T x, T y) const
{
    // Rectangles with negative dimensions are allowed, so we must handle them correctly

    // Compute the real min and max of the rectangle on both axes
    T minX = std::min(left, static_cast<T>(left + width));
    T maxX = std::max(left, static_cast<T>(left + width));
    T minY = std::min(top, static_cast<T>(top + height));
    T maxY = std::max(top, static_cast<T>(top + height));

    return (x >= minX) && (x < maxX) && (y >= minY) && (y < maxY);
}


////////////////////////////////////////////////////////////
template <typename T>
bool Rect<T>::contains(const Vector2<T>& point) const
{
    return contains(point.x, point.y);
}


////////////////////////////////////////////////////////////
template <typename T>
bool Rect<T>::intersects(const Rect<T>& rectangle) const
{
    Rect<T> intersection;
    return intersects(rectangle, intersection);
}


////////////////////////////////////////////////////////////
template <typename T>
bool Rect<T>::intersects(const Rect<T>& rectangle, Rect<T>& intersection) const
{
    // Rectangles with negative dimensions are allowed, so we must handle them correctly

    // Compute the min and max of the first rectangle on both axes
    T r1MinX = std::min(left, static_cast<T>(left + width)); //problems start here
    T r1MaxX = std::max(left, static_cast<T>(left + width));
    T r1MinY = std::min(top, static_cast<T>(top + height));
    T r1MaxY = std::max(top, static_cast<T>(top + height));

    // Compute the min and max of the second rectangle on both axes
    T r2MinX = std::min(rectangle.left, static_cast<T>(rectangle.left + rectangle.width));
    T r2MaxX = std::max(rectangle.left, static_cast<T>(rectangle.left + rectangle.width));
    T r2MinY = std::min(rectangle.top, static_cast<T>(rectangle.top + rectangle.height));
    T r2MaxY = std::max(rectangle.top, static_cast<T>(rectangle.top + rectangle.height));

    // Compute the intersection boundaries
    T interLeft   = std::max(r1MinX, r2MinX);
    T interTop    = std::max(r1MinY, r2MinY);
    T interRight  = std::min(r1MaxX, r2MaxX);
    T interBottom = std::min(r1MaxY, r2MaxY);

    // If the intersection is valid (positive non zero area), then there is an intersection
    if ((interLeft < interRight) && (interTop < interBottom))
    {
        intersection = Rect<T>(interLeft, interTop, interRight - interLeft, interBottom - interTop);
        return true;
    }
    else
    {
        intersection = Rect<T>(0, 0, 0, 0);
        return false;
    }
}


////////////////////////////////////////////////////////////
template <typename T>
inline bool operator ==(const Rect<T>& left, const Rect<T>& right)
{
    return (left.left == right.left) && (left.width == right.width) &&
           (left.top == right.top) && (left.height == right.height);
}


////////////////////////////////////////////////////////////
template <typename T>
inline bool operator !=(const Rect<T>& left, const Rect<T>& right)
{
    return !(left == right);
}
 


I get the errors:-
Error   9   error C2059: syntax error : '::'
Error   10   error C2589: '(' : illegal token on right side of '::'
 and that till line 130 (in VS)

Please help

« Last Edit: March 20, 2016, 05:41:14 pm by Serilda »

eXpl0it3r

  • SFML Team
  • Hero Member
  • *****
  • Posts: 11030
    • View Profile
    • development blog
    • Email
We're an SFML forum dedicated to questions and problems related to SFML. Most of your questions are either C++ or general game design questions.
We do like to help as much as possible but at some point you have to learn C++ and game development through other means than to post random issues on the SFML forum.

C++ is a complex language and adding all the various toolchains makes it even more challenging. So maybe spend a bit more time on learning what a compiler does, how you can go about fixing compiler errors or how to understand these errors.

Above all, if you run into an issue, don't just post it on the forum, but try to figure out why it's happening. What line does the error occur? What does Google tell you about the error?
Programming is an activity where you solve problems and not let problems be "crowd sourced" on the forum. ;)
Official FAQ: https://www.sfml-dev.org/faq.php
Official Discord Server: https://discord.gg/nr4X7Fh
——————————————————————
Dev Blog: https://duerrenberger.dev/blog/

Serilda

  • Guest
Oh yes, I figured, I thought it was related to SFML because it was in Rect.inl , I can't delete the topic, it's now solved, so just ignore it guys , sorry.

Kverty

  • Newbie
  • *
  • Posts: 1
    • View Profile
Re: Error30error C2589: '(' : illegal token on right side of '::' Please help
« Reply #3 on: December 11, 2018, 04:18:11 am »
Got the same error, and I feel that I must mention how I solved it for the next person that google the same error and get this thread as first result.

Problem is in one of headers you are including before <SFML/Graphics.hpp>, to chek that, move SFML/Graphics.hpp to top as first include, it should either work, or give different error message.

Redee

  • Jr. Member
  • **
  • Posts: 97
    • View Profile
Re: Error30error C2589: '(' : illegal token on right side of '::' Please help
« Reply #4 on: February 22, 2020, 05:09:17 pm »
Got the same error, and I feel that I must mention how I solved it for the next person that google the same error and get this thread as first result.

Problem is in one of headers you are including before <SFML/Graphics.hpp>, to chek that, move SFML/Graphics.hpp to top as first include, it should either work, or give different error message.

Thank you, in my case: Windows.h header )).

NOBLENAGA

  • Newbie
  • *
  • Posts: 1
    • View Profile
    • Email
Re: Error30error C2589: '(' : illegal token on right side of '::' Please help
« Reply #5 on: February 15, 2021, 01:00:36 am »
Got the same error, and I feel that I must mention how I solved it for the next person that google the same error and get this thread as first result.

Problem is in one of headers you are including before <SFML/Graphics.hpp>, to chek that, move SFML/Graphics.hpp to top as first include, it should either work, or give different error message.

Thank you, your post actually helped. Instead of telling someone to "learn C++ compilers", you actually offered a possible solution that worked for you. I think it's fair to say that everyone on this forum would love to use C++ to its fullest potential. So it's best that we help each other along the way, not give empty advice. thank you again. :)