【发布时间】:2018-10-17 22:14:43
【问题描述】:
--快速之前
所以在有人说这个问题已经在另一个帖子上得到回答之前,它还没有......这是另一个帖子中的一个家庭作业问题,最初的问题从未得到回答,只是告诉他们错了。
--问题
我正在尝试重载 >> 运算符,以便能够将 n 个以逗号分隔的变量传递到像这样的对象中......
Mat M = (Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
我正在尝试重用他们对逗号分隔参数列表的使用,但我似乎无法让它发挥作用。
当我像这样重载
void operator<< (const double& is)
{
std::cout << "hiya " << is << std::endl;
}
并尝试像这样使用它
mat << 1.0, 2.0;
只有第一个值被传递给操作员...第二个值永远不会被“使用”,因为我相信<< 比, 具有更高的优先级
所以我的问题是他们在 eigen 和 openCV 等库中做了什么才能拥有此功能。我查看了他们的代码以试图理解它,但它似乎需要更深入地了解 C++ 的工作原理,而我没有,我希望这里有人能对此有所了解。
提前感谢您的任何建议。
【问题讨论】:
-
你可以使用初始化列表吗? (即我们可以把所有的数字都放在
{}大括号内)object << { 1,2,3,4,5,6,7,8}; -
@MartinYork 虽然这很好,但似乎不可能如这里解释的那样。 stackoverflow.com/questions/11420448/…
标签: c++ overloading eigen operator-keyword istream