如何在堆栈c++容器中存储void*
How to store void* in a stack c++ container
我使用的是一个用C编写的库,该库提供的头只使用void*。该库用于创建一种图,该图存储在C数据库中。标头向图中的节点返回void*。为了创建图,我需要解析一堆节点名称。与节点名称的堆栈并行,我需要为节点维护一个堆栈void*。我有这样的东西:
std::stack < void* > nodeStack;
while (!nodeNameStack.empty()) {
// check if nodeNamestack.front() meets some criteria
nodeStack.push(C_API_To_Create_Node(nodeNameStack.pop()));
// Do some processing
// check if nodeStack.size() >= 2
void *node1 = nodeStack.pop()
void *node2 = nodeStack.pop()
// Above line issues error saying void value not ignored as it ought to be..
我不确定问题是什么,因为我们保证nodeStack大小至少为2。如果有任何克服这个错误的建议,我将不胜感激。。
std::stack::pop()
不会返回已删除的元素。在弹出它之前,您必须用top()
读取它。
2件事
A) 你忘了nodeStack.pop().之后的s
B) pop()返回void,这就是您得到错误的原因。pop()只是从堆栈中删除元素。使用.top()获取元素,然后使用.pop()删除它。
stack::pop的原型是
void pop ( );
因此,它不会返回任何因此发出警告的内容。也许您打算使用stack::top
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 合法的方式将destructor信息存储到void*
- 在 void 指针中存储整数的往返安全性
- 如何在 c++ 结构中的 void* 变量中调用存储函数(回调)
- 从void Pointer(创建通用存储)铸造有什么问题
- void 函数 C++ 错误 此声明没有存储类或类型说明符
- 如何将 void 指针类型转换为 int 指针,然后在其中存储 int
- c++将存储在std::vector中的数据传递给c_func(void*data)
- 存储各种 void 函数指针的向量及其参数
- 可以在C++中用void指针存储类对象的地址
- C++中存储在void中的值是多少
- RAII - 存储"void*&"或"void**"
- 为Node.js插件在void *中检索和存储V8对象
- 我想存储函数的void指针以及它们的类型
- 将派生对象存储到void*中,然后从中抛出基对象是否不安全
- 如何在堆栈c++容器中存储void*