gpt4 book ai didi

c++ - 指向模板类的指针

转载 作者:行者123 更新时间:2023-12-02 06:34:19 25 4
gpt4 key购买 nike

我编写了一个简单的模板类,如果不使用指针创建对象,则该类可以正常工作。但是,如果我需要创建指向该类对象的指针,我会得到 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(并记住当不再需要它时删除它,这样你就不会泄漏它)。

Logger<int>* myLogger = new Logger<int>(5);

我不知道您执行此操作的用例是什么,但如果您确实需要动态分配对象,我建议您使用智能指针(如果可以的话)。

std::unique_ptr<Logger<int>> myLogger = std::make_unique<Logger<int>>(5);

关于c++ - 指向模板类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653520/

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