不同cpp文件怎么使用同一个智能指针对象
时间: 2024-11-27 11:23:25 浏览: 0
cpp-valuable一个具有值语义的C智能指针
在C++中,如果你想让不同cpp文件共享同一个智能指针对象,你需要确保该对象被声明为全局变量或者静态成员变量,并且在包含该对象头文件的cpp文件中初始化。这是因为智能指针(如std::shared_ptr、std::unique_ptr等)是非copyable的,所以它们不能直接作为函数返回值传递给其他函数。
例如:
```cpp
// 智能指针头文件 (my_object_ptr.h)
#pragma once
#include <memory>
class MyClass {
//...
};
std::shared_ptr<MyClass> sharedObject; // 声明全局智能指针
// 其他cpp文件中使用
#include "my_object_ptr.h"
int main() {
// 主文件可以访问并使用这个智能指针
if (sharedObject) {
sharedObject->someMethod();
}
return 0;
}
// 或者在单例模式下,将它设置为静态成员
class Singleton {
public:
static std::shared_ptr<MyClass>& getInstance() {
static std::shared_ptr<MyClass> instance(new MyClass());
return instance;
}
private:
Singleton() = default;
~Singleton() = delete;
};
```
阅读全文