从std list中删除单个指针对象

std::list<WatcherSet* >* _watcherSetList;

void WatcherManager::removeWatcherSet(WatcherSet* watcherSet)

{
std::list<WatcherSet* >::iterator it = _watcherSetList->begin();
WatcherSet* pTemp = *it;
while (it!=_watcherSetList->end())
{
if (pTemp==watcherSet)
{
delete pTemp; //删除临时变量,直接删除会导致迭代器失效
pTemp = nullptr;
watcherSet = nullptr;
it = _watcherSetList->erase(it++);
}
else

{

it++;

}
}
}
### C/C++ 中结构体嵌套及函数指针的使用 #### 结构体内嵌套其他结构体 在C/C++编程语言中,可以将一个结构体作为另一个结构体的数据成员来实现结构体之间的嵌套。这种设计模式有助于构建复杂的数据模型并提高代码可读性和维护性。 考虑如下例子,在`TargetsInfos`结构体内部包含了多个`TargetInfo`类型的对象实例: ```cpp #include <iostream> #include <string> // 定义单个目标的信息 struct TargetInfo { std::string targetName; float angle; float distance; void display() const { std::cout << "Target Name: " << targetName << ", Angle: " << angle << ", Distance: " << distance << '\n'; } }; // 定义一组目标信息 struct TargetsInfos { int num; // 存储实际的目标数目 TargetInfo* info; // 动态分配内存用于保存各个目标的具体情况 ~TargetsInfos(); // 析构函数释放动态申请的空间 }; ``` 上述代码展示了如何在一个较大的容器类(`TargetsInfos`)里封装较小的对象类型(`TargetInfo`),从而形成层次化的数据表示方式[^5]。 #### 添加函数指针到结构体 为了增强灵活性,可以在结构体定义中加入指向特定功能处理程序的指针——即所谓的“回调机制”。这允许不同的算法逻辑被绑定至同一接口之下执行相同的操作序列。 下面的例子说明了怎样向之前提到过的`TargetInfo`增加一个名为`processData`的成员变量,它是一个接受两个浮点型参数并返回整数值的函数签名对应的指针: ```cpp using ProcessFunc = int(*)(float, float); struct ExtendedTargetInfo : public TargetInfo{ ProcessFunc processData; // Constructor with initialization list to set up the function pointer. ExtendedTargetInfo(std::string name, float ang, float dist, ProcessFunc func) : TargetInfo{name, ang, dist}, processData{func} {} // Example method that uses the stored function pointer. int executeProcess(float param1, float param2){ if (this->processData != nullptr) { return this->processData(param1,param2); } else { throw std::runtime_error("No process data function assigned."); } } }; ``` 这里引入了一个新的派生自`TargetInfo`的新结构体叫做`ExtendedTargetInfo`,其中增加了对某种外部计算过程的支持能力。当调用者希望利用这个特性时,则需提供相应的具体实现形式给构造器;而一旦设置完毕之后就可以随时触发该行为以完成预期的任务需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值