Skip to content

TEST_Animate2D.cpp does not compile on ubuntu #365

@GeraldRyan

Description

@GeraldRyan

Great codebase and fun project. I am pretty new to this and to C++ generally

As the subject says, the TEST_ANIMATE2D does not work. If you could point me in the right direction of a fix, I can maybe do a PR - if the fix is simple.

The other example files compile no problem, with the following command
g++ -o test_quickGUI examples/TEST_QuickGUI.cpp -I. -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17

When I do g++ -o test_quickGUI examples/TEST_Animate2D.cpp -I. -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17 I get the following list of errors:

In file included from ./utilities/olcUTIL_Animate2D.h:62,
                 from examples/TEST_Animate2D.cpp:56:
./utilities/olcUTIL_Geometry2D.h:485:24: error: conflicting declaration ‘typedef struct olc::v_2d<int> olc::vi2d’
  485 |  typedef v_2d<int32_t> vi2d;
      |                        ^~~~
In file included from examples/TEST_Animate2D.cpp:54:
./olcPixelGameEngine.h:739:31: note: previous declaration as ‘typedef struct olc::v2d_generic<int> olc::vi2d’
  739 |  typedef v2d_generic<int32_t> vi2d;
      |                               ^~~~
In file included from ./utilities/olcUTIL_Animate2D.h:62,
                 from examples/TEST_Animate2D.cpp:56:
./utilities/olcUTIL_Geometry2D.h:486:25: error: conflicting declaration ‘typedef struct olc::v_2d<unsigned int> olc::vu2d’
  486 |  typedef v_2d<uint32_t> vu2d;
      |                         ^~~~
In file included from examples/TEST_Animate2D.cpp:54:
./olcPixelGameEngine.h:740:32: note: previous declaration as ‘typedef struct olc::v2d_generic<unsigned int> olc::vu2d’
  740 |  typedef v2d_generic<uint32_t> vu2d;
      |                                ^~~~
In file included from ./utilities/olcUTIL_Animate2D.h:62,
                 from examples/TEST_Animate2D.cpp:56:
./utilities/olcUTIL_Geometry2D.h:487:22: error: conflicting declaration ‘typedef struct olc::v_2d<float> olc::vf2d’
  487 |  typedef v_2d<float> vf2d;
      |                      ^~~~
In file included from examples/TEST_Animate2D.cpp:54:
./olcPixelGameEngine.h:741:29: note: previous declaration as ‘typedef struct olc::v2d_generic<float> olc::vf2d’
  741 |  typedef v2d_generic<float> vf2d;
      |                             ^~~~
In file included from ./utilities/olcUTIL_Animate2D.h:62,
                 from examples/TEST_Animate2D.cpp:56:
./utilities/olcUTIL_Geometry2D.h:488:23: error: conflicting declaration ‘typedef struct olc::v_2d<double> olc::vd2d’
  488 |  typedef v_2d<double> vd2d;
      |                       ^~~~
In file included from examples/TEST_Animate2D.cpp:54:
./olcPixelGameEngine.h:742:30: note: previous declaration as ‘typedef struct olc::v2d_generic<double> olc::vd2d’
  742 |  typedef v2d_generic<double> vd2d;
      |                              ^~~~
In file included from examples/TEST_Animate2D.cpp:56:
./utilities/olcUTIL_Animate2D.h: In constructor ‘olc::utils::Animate2D::Frame::Frame(const olc::Renderable*, const olc::utils::geom2d::rect<int>&)’:
./utilities/olcUTIL_Animate2D.h:82:54: error: no match for ‘operator=’ (operand types are ‘olc::v_2d<int>’ and ‘olc::vi2d’ {aka ‘olc::v2d_generic<int>’})
   82 |     rectFrameSource.size = gfxSource->Sprite()->Size();
      |                                                      ^
In file included from ./utilities/olcUTIL_Animate2D.h:62,
                 from examples/TEST_Animate2D.cpp:56:
./utilities/olcUTIL_Geometry2D.h:218:26: note: candidate: ‘constexpr olc::v_2d<T>& olc::v_2d<T>::operator=(const olc::v_2d<T>&) [with T = int]’
  218 |   inline constexpr v_2d& operator=(const v_2d& v) = default;
      |                          ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:218:48: note:   no known conversion for argument 1 from ‘olc::vi2d’ {aka ‘olc::v2d_generic<int>’} to ‘const olc::v_2d<int>&’
  218 |   inline constexpr v_2d& operator=(const v_2d& v) = default;
      |                                    ~~~~~~~~~~~~^
./utilities/olcUTIL_Geometry2D.h: In instantiation of ‘constexpr auto olc::operator+(const olc::v_2d<TL>&, const TR&) [with TL = int; TR = olc::v2d_generic<int>]’:
examples/TEST_Animate2D.cpp:264:92:   required from here
./utilities/olcUTIL_Geometry2D.h:407:21: error: no match for ‘operator+’ (operand types are ‘const int’ and ‘const olc::v2d_generic<int>’)
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |               ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:392:24: note: candidate: ‘template<class T> constexpr auto olc::operator+(const olc::v_2d<TL>&)’
  392 |  inline constexpr auto operator + (const v_2d<T>& lhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:392:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:21: note:   mismatched types ‘const olc::v_2d<TL>’ and ‘const int’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |               ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:399:24: note: candidate: ‘template<class TL, class TR> constexpr auto olc::operator+(const TL&, const olc::v_2d<TR>&)’
  399 |  inline constexpr auto operator + (const TL& lhs, const v_2d<TR>& rhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:399:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:21: note:   ‘const olc::v2d_generic<int>’ is not derived from ‘const olc::v_2d<TR>’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |               ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:405:24: note: candidate: ‘template<class TL, class TR> constexpr auto olc::operator+(const olc::v_2d<TL>&, const TR&)’
  405 |  inline constexpr auto operator + (const v_2d<TL>& lhs, const TR& rhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:405:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:21: note:   mismatched types ‘const olc::v_2d<TL>’ and ‘const int’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |               ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:411:24: note: candidate: ‘template<class TL, class TR> constexpr auto olc::operator+(const olc::v_2d<TL>&, const olc::v_2d<TR>&)’
  411 |  inline constexpr auto operator + (const v_2d<TL>& lhs, const v_2d<TR>& rhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:411:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:21: note:   mismatched types ‘const olc::v_2d<TL>’ and ‘const int’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |               ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:407:34: error: no match for ‘operator+’ (operand types are ‘const int’ and ‘const olc::v2d_generic<int>’)
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |                            ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:392:24: note: candidate: ‘template<class T> constexpr auto olc::operator+(const olc::v_2d<TL>&)’
  392 |  inline constexpr auto operator + (const v_2d<T>& lhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:392:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:34: note:   mismatched types ‘const olc::v_2d<TL>’ and ‘const int’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |                            ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:399:24: note: candidate: ‘template<class TL, class TR> constexpr auto olc::operator+(const TL&, const olc::v_2d<TR>&)’
  399 |  inline constexpr auto operator + (const TL& lhs, const v_2d<TR>& rhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:399:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:34: note:   ‘const olc::v2d_generic<int>’ is not derived from ‘const olc::v_2d<TR>’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |                            ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:405:24: note: candidate: ‘template<class TL, class TR> constexpr auto olc::operator+(const olc::v_2d<TL>&, const TR&)’
  405 |  inline constexpr auto operator + (const v_2d<TL>& lhs, const TR& rhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:405:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:34: note:   mismatched types ‘const olc::v_2d<TL>’ and ‘const int’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |                            ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:411:24: note: candidate: ‘template<class TL, class TR> constexpr auto olc::operator+(const olc::v_2d<TL>&, const olc::v_2d<TR>&)’
  411 |  inline constexpr auto operator + (const v_2d<TL>& lhs, const v_2d<TR>& rhs)
      |                        ^~~~~~~~
./utilities/olcUTIL_Geometry2D.h:411:24: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:34: note:   mismatched types ‘const olc::v_2d<TL>’ and ‘const int’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |                            ~~~~~~^~~~~
./utilities/olcUTIL_Geometry2D.h:407:10: error: class template argument deduction failed:
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./utilities/olcUTIL_Geometry2D.h:407:10: error: no matching function for call to ‘v_2d()’
./utilities/olcUTIL_Geometry2D.h:215:20: note: candidate: ‘template<class T> v_2d(const olc::v_2d<T>&)-> olc::v_2d<T>’
  215 |   inline constexpr v_2d(const v_2d& v) = default;
      |                    ^~~~
./utilities/olcUTIL_Geometry2D.h:215:20: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:10: note:   candidate expects 1 argument, 0 provided
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./utilities/olcUTIL_Geometry2D.h:211:20: note: candidate: ‘template<class T> v_2d(T, T)-> olc::v_2d<T>’
  211 |   inline constexpr v_2d(T _x, T _y) : x(_x), y(_y)
      |                    ^~~~
./utilities/olcUTIL_Geometry2D.h:211:20: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:10: note:   candidate expects 2 arguments, 0 provided
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./utilities/olcUTIL_Geometry2D.h:208:20: note: candidate: ‘template<class T> v_2d()-> olc::v_2d<T>’
  208 |   inline constexpr v_2d() = default;
      |                    ^~~~
./utilities/olcUTIL_Geometry2D.h:208:20: note:   template argument deduction/substitution failed:
./utilities/olcUTIL_Geometry2D.h:407:10: note:   couldn’t deduce template parameter ‘T’
  407 |   return v_2d(lhs.x + rhs, lhs.y + rhs);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./utilities/olcUTIL_Geometry2D.h:407:10: error: expression list treated as compound expression in functional cast [-fpermissive]
examples/TEST_Animate2D.cpp: In member function ‘virtual bool TEST_Animate2D::OnUserUpdate(float)’:
examples/TEST_Animate2D.cpp:264:127: error: invalid use of void expression
  264 | pos, frame.GetSourceImage()->Decal(), frame.GetSourceRect().pos + vOffset, frame.GetSourceRect().size);
      |                                                        

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions