gpt4 book ai didi

c++ - 如何使用带有智能指针的模拟对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:29 38 4
gpt4 key购买 nike

我想使用模拟对象来测试我的使用 shared_ptr 指针的类。

喜欢,

struct MyInterface {
// public functions
};

class MyClass {
public:
MyClass (shared_ptr<MyInterface> handle) : m_handle(handle) {}
~MyClass() {}
// ...
private :
shared_ptr<MyInterface> m_handle;
}

当我测试 MyClass 时,我将一个模拟对象传递给它。

struct NullDeleter {template<typename T> void operator()(T*) {} };

TMockObject<MyInterface> * mock = new TMockObject<MyInterface>();
shared_ptr<MyInterface> handle((MyInterface*)(*mock), NullDeleter());

MyClass myClass(handle);
delete mock;

问题是我在创建共享指针时必须使用 NullDeleter,否则,mock 将作为 MyInterface 被删除,这会导致错误。

有没有更好的设计?

谢谢~

最佳答案

如果我能理解你想做什么,我不会犯错,我更喜欢在 myClass 类中使用方法来检查参数的正确值。这意味着,您应该在将参数传递给类构造函数后,提供另一种方法来检查该值。

关于c++ - 如何使用带有智能指针的模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760608/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com