打印JSAPIWeakPtr的值
Print value of a JSAPIWeakPtr
我尝试使用以下代码打印std::map<int, FB::JSAPIWeakPtr> apiMap;
的所有元素:
void printMap() {
std::map<int, FB::JSAPIWeakPtr>::iterator p;
p= apiMap.begin();
for(; p!=apiMap.end(); ++p)
{
std::cout << "int is: " << p->first << endl;
std::cout << "FB::JSAPIWeakPtr is: " << p->second << endl;
}
}
但我收到以下错误:
In function ‘void printMap()’:
error: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char>]((* & std::cout),
((const char*)"map is: ")) << p.std::_Rb_tree_iterator<_Tp>::operator-> [with _Tp = std::pair<const int,
boost::weak_ptr<FB::JSAPI> >, std::_Rb_tree_iterator<_Tp>::pointer = std::pair<const int,
boost::weak_ptr<FB::JSAPI> >*]()->std::pair<const int, boost::weak_ptr<FB::JSAPI> >::second’
有没有办法打印FB::JSAPIWeakPtr
的值?
首先要实现的是FB::JSAPIWeakPtr只是boost::weak_ptr 的typedef
这在一定程度上取决于你想要实际完成什么;如果你只是想弄清楚它是否还有价值,我会这样做:
for(; p!=apiMap.end(); ++p)
{
std::cout << "int is: " << p->first << endl;
FB::JSAPIPtr cur(p->second.lock());
if (cur) { std::cout << "FB::JSAPIWeakPtr is valid" << endl; }
else { "FB::JSAPIWeakPtr is invalid" << endl; }
}
如果你真的想打印出这个值,你可以使用cur.get()
来获得实际的指针值。需要记住的主要一点是,weak_ptr没有真正的有效值,只有当你能够成功锁定它时,它才有一个值(这可以防止你访问它时它被释放)。
另一件需要注意的事情是,在插件开发中,std::cout成为一个有用的编写工具是非常罕见的;您可能想阅读FireBreath Logging
相关文章:
- 数组索引的值没有增加
- 'short int'持有的值溢出,但"自动"不会溢出?
- 是默认情况下分配给char数组常量的值
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 为什么我无法更改"set<set>"循环中的值<int>
- 有效地使用std::unordered_map来插入或增加键的值
- <streamsize>C++ 中 numeric_limits::max() 的值
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 无法获取webot::PositionSensor对象中位置传感器的值
- 正在将无序映射设置为无序映射的值
- 着色器纹理值与创建纹理时写入的值不同
- 无法按cpp中的值返回矢量
- 指针没有更新它在void函数内部指向的值
- 不能将 "void *" 类型的值分配给类型 "TCHAR" 的实体
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 如何在c++中获取要更新的值
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 打印JSAPIWeakPtr的值