以下是一个示例代码,其中定义了一个类模板和一个函数模板,函数模板返回一个指向类模板对象的共享指针:
#include
template
class MyClass {
public:
MyClass(T data) : mData(data) {}
T getData() const { return mData; }
private:
T mData;
};
template
std::shared_ptr> createObject(T data) {
return std::make_shared>(data);
}
int main() {
auto obj = createObject(42);
std::cout << obj->getData() << std::endl; // 输出: 42
return 0;
}
在上述代码中,MyClass
是一个类模板,它具有一个模板参数 T
,代表数据类型。MyClass
类中有一个数据成员 mData
和一个成员函数 getData()
,用于返回存储的数据。
createObject
是一个函数模板,它接受一个参数 data
,用于构造一个 MyClass
对象,并返回一个指向该对象的共享指针。在 main
函数中,我们调用 createObject
函数创建一个存储整数 42 的 MyClass
对象,并使用共享指针 obj
来访问该对象的数据。
注意,我们使用 std::make_shared
来创建共享指针,这样可以避免显式调用 new
操作符,从而提高代码的安全性和可读性。