c++ - 指向模板类的指针
问题描述
我写了一个简单的模板类,如果对象是在不使用指针的情况下创建的,它可以正常工作。但是,如果我需要创建一个指向该类对象的指针,我会得到error: invalid conversion from ‘int’ to ‘Logger<int>*’ [-fpermissive]
. 我附上下面的代码。任何帮助表示赞赏。谢谢你。
#include <iostream>
using namespace std;
template<typename T>
class Logger
{
public:
Logger (const T& d) {data = d;}
void print(){std::cout << "data: " << data << std::endl;}
private:
int data;
};
int main() {
/*
// Works
Logger<int> myLogger(5);
myLogger.print();
*/
Logger<int>* myLogger(5);
myLogger->print();
return 0;
}
解决方案
如果您想分配一个您需要使用的指针(并在不再需要它时new
记住它,以免泄漏它)。delete
Logger<int>* myLogger = new Logger<int>(5);
我不知道您的用例是什么,但是如果您确实需要动态分配对象,我建议您尽可能使用智能指针。
std::unique_ptr<Logger<int>> myLogger = std::make_unique<Logger<int>>(5);
推荐阅读
- php - 网站字体更改错误
- iterm2 - 打开 iTerm2 后,会话立即关闭
- r - 强制 R 包版本依赖的上限
- email - 如何通过发送到 SMS 网关的电子邮件发送链接
- php - PHP登录系统,安全吗?
- amazon-web-services - AWS Lambda 和 S3 - OpenBLAS 警告 - 无法确定此系统上的 L2 缓存大小,假设为 256k
- javascript - Jasmine,业力,TypeError:无法读取未定义的属性“returnValue”
- django - 由于中间件文件,网址未显示
- javascript - 将对象转换为数组的优雅方式
- python - 如何在 Python 的成绩单中找到百分比?