函数指针清空自身的矢量
Vector of function pointers emptying itself
我正在做一个项目,并开始了一个新的类。我想用一个向量来存储函数的指针,然后调用它们。获取函数指针并调用它不是问题,但存储它们却是问题。我试着把它们存储在一个向量中,但它一直在清空自己。我试着让向量成为一个类的成员和一个外部,但都不起作用。我以前从未遇到过这种问题,也不知道为什么会发生这种情况。这是我当前的代码:
TickHandler.h:
#include <iostream>
#include <ctime>
#include <vector>
class tickHandler {
public:
void addTickingFunction(void(*func)());
void onTick(void);
std::vector<void(*)()>funcs;
};
extern tickHandler TickHandler;
TickHandler.cpp:
#include "TickHandler.h"
tickHandler TickHandler;
void tickHandler::addTickingFunction(void(*func)())
{
funcs.push_back(func);
std::cout << funcs.size() << std::endl;
}
void tickHandler::onTick()
{
std::cout << funcs.size() << std::endl;
for (int i = 0; i< funcs.size();i++)
{
funcs[i]();
}
}
预期输出为:
1
1
但它却是:
1
0
如有任何帮助,我们将不胜感激。
编辑:项目中有很多代码,但类只能由两个函数访问:
TickHandler.addTickingFunction(&physicsTick);
和
TickHandler.onTick();
首先,我建议您在头文件周围设置一些保护措施,例如:
#ifndef TICKHANDLER_H
#define TICKHANDLER_H
// Class declaration.
#endif
我在这里尝试一下,但我认为你的问题是,你将物理tick函数添加到tick处理程序的一个实例中,但在另一个中运行它们。我不认为他们正在消失。
不知怎么的,您已经得到了TickHandler
类的两个实例。如果这是C++,并且是一种面向对象的语言,那么extern TickHandler
和在.cpp
文件中创建的全局实例会给我敲响警钟
相关文章:
- 如何清除/清空已打开的文件C++
- 为什么成员函数内的"this"指针为空?
- 使用完数据结构后清空数据结构是一个好习惯吗?
- 这个用于清空链表的代码可以吗?
- 通过信号槽发送QPixmap指针,空像素图数据
- Boost::asio::streambuf consumption() 不清空缓冲区
- 小于非空原始指针和空点之间的运算符
- 如何从对象的指针清空 std::set?
- 创建指向对象的指针的空数组
- 复制的队列更改 打印临时队列后队列的头部指针指向空 队列
- 互斥锁指针双重空检查的原因是什么?
- 是否使用示波器队列:: swap违反任何规则来清空std ::队列
- std::vector 从一行代码清空到下一行代码
- Eclipse-如何定义宏(不仅是符号)以清空
- C ++如果我使用引用,为什么要清空我的map<string,string>?
- 清空包含char*的结构数组
- 将STD :: unordered_map内存足迹清空后
- 在删除之前清空指针是否会导致内存泄漏
- 函数指针清空自身的矢量
- 在返回地址之前清空指针