我有一个使用嵌套类的类,并希望使用嵌套类在上层类中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) 我正在尝试做一些简单的事情:
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虽然可以毫无问题地打印特征矩阵和向量。那么问题是什么?
如何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)