2

これらのライブラリを一緒に使用する人はいますか? cxx-prettyprintglm。把握するのが難しいコンパイル時の問題が発生しています。

    9 #include "Math.h"
   10 #include "UnitTestConfigurator.h"
   11 #include <vector>
   12 using namespace std;
   13
   14 ostream& operator <<(ostream& os, const v3& v) {
   15     string s("a v3");
   16     os << s;
   17     return os;
   18 }
   19
   20 SUITE(MathTests) {
   21     TEST(PrintVectorType) {
   22         v3 vec3;
   23         cout << vec3;
   24     }
   25     TEST(PrintVectorofVectors) {
   26         vector<v3> v;
   27         cout << v;
   28     }
   29 }

"SUITE" と "TEST" が混同されている場合、それはこのコードが を使用しているためですUnitTest++

Math.h には次のものが含まれています。

# include "../glm/glm/glm.hpp"
typedef glm::vec2 v2;
typedef glm::vec3 v3;

エラーは次のとおりです。

In file included from Math.cpp:10:
In file included from ./UnitTestConfigurator.h:26:
In file included from ./util.h:62:
./prettyprint.hpp:212:32: error: call to function 'operator<<' that is neither visible in the
      template definition nor found by argument-dependent lookup
                        stream << *it;
                               ^
./prettyprint.hpp:295:9: note: in instantiation of member function
      'pretty_print::print_container_helper<std::__1::vector<glm::detail::tvec3<float, 0>,
      std::__1::allocator<glm::detail::tvec3<float, 0> > >, char,
      std::__1::char_traits<char>,
      pretty_print::delimiters<std::__1::vector<glm::detail::tvec3<float, 0>,
      std::__1::allocator<glm::detail::tvec3<float, 0> > >, char> >::operator()' requested
      here
        helper(stream);
        ^
./prettyprint.hpp:305:23: note: in instantiation of function template specialization
      'std::operator<<<std::__1::vector<glm::detail::tvec3<float, 0>,
      std::__1::allocator<glm::detail::tvec3<float, 0> > >, char,
      std::__1::char_traits<char>,
      pretty_print::delimiters<std::__1::vector<glm::detail::tvec3<float, 0>,
      std::__1::allocator<glm::detail::tvec3<float, 0> > >, char> >' requested here
        return stream << ::pretty_print::print_container_helper<T, TChar, TCharTraits...
                      ^
Math.cpp:27:8: note: in instantiation of function template specialization
      'std::operator<<<std::__1::vector<glm::detail::tvec3<float, 0>,
      std::__1::allocator<glm::detail::tvec3<float, 0> > >, char, std::__1::char_traits<char>
      >' requested here
                cout << v;
                     ^
Math.cpp:14:10: note: 'operator<<' should be declared prior to the call site or in namespace
      'glm::detail'
ostream& operator <<(ostream& os, const v3& v) {
         ^
4

1 に答える 1