相关疑难解决方法(0)

重载operator <<:无法将左值绑定到'std :: basic_ostream <char> &&'

我有一个使用嵌套类的类,并希望使用嵌套类在上层类中operator<<定义operator<<.以下是我的代码的样子:

#include <memory>
#include <iostream>

template<typename T>
struct classA {
  struct classB
  {
    template<typename U>
    friend inline std::ostream& operator<< (std::ostream &out,
                                            const typename classA<U>::classB &b);
  };

  classB root;

  template<typename U>
  friend std::ostream& operator<< (std::ostream &out,
                                   const classA<U> &tree);
};

template<typename T>
inline std::ostream& operator<< (std::ostream &out,
                                 const classA<T> &tree)
{
  out << tree.root;
  return out;
}

template<typename T>
inline std::ostream& operator<< (std::ostream &out,
                                 const typename classA<T>::classB &b)
{
  return out;
}

int main()
{
  classA<int> a; …
Run Code Online (Sandbox Code Playgroud)

c++

42
推荐指数
2
解决办法
5万
查看次数

在 Eigen 中显示仿射变换

我正在尝试做一些简单的事情:

std::cout << e << std::endl;  
Run Code Online (Sandbox Code Playgroud)

哪里e是类型Eigen::Affine3d。但是,我收到了无用的错误消息,例如:

cannot bind 'std::ostream {aka std::basic_ostream<char>}'   
lvalue to 'std::basic_ostream<char>&&'
Run Code Online (Sandbox Code Playgroud)

对于这是有益解释原因在这里,但如果答案不适用。

官方文档被生硬,这意味着只有Affine3d和Affine3f对象是矩阵。std::cout虽然可以毫无问题地打印特征矩阵和向量。那么问题是什么?

c++ cout eigen eigen3

3
推荐指数
1
解决办法
4449
查看次数

high_resolution_clock错误:无法将'std :: ostream {aka std :: basic_ostream <char>}'左值绑定到'std :: basic_ostream <char> &&'

如何high_resolution_clock在C++中打印?

#include <iostream>
#include <chrono>

typedef std::chrono::high_resolution_clock high_resolution_clock;

int main()
{
    std::cout << high_resolution_clock::now() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

建立以上结果:

/home/greg/repositories/firstProject/main.cpp:27: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘std::chrono::_V2::system_clock::time_point {aka std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > >}’)
     std::cout << high_resolution_clock::now() << std::endl;
     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

/home/greg/repositories/firstProject/main.cpp:27: error: cannot bind ‘std::ostream {aka std::basic_ostream<char>}’ lvalue to ‘std::basic_ostream<char>&&’
     std::cout << high_resolution_clock::now() << std::endl;
                                             ^
Run Code Online (Sandbox Code Playgroud)

看完这个答案后,我试图迭代"容器":

#include <iostream>
#include <chrono>

typedef std::chrono::high_resolution_clock high_resolution_clock;

int main()
{
    for(auto i: …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
415
查看次数

标签 统计

c++ ×3

cout ×1

eigen ×1

eigen3 ×1