作者:基基蛋 | 来源:互联网 | 2023-09-17 14:25
ImdesigningaFactorythatcreatesdifferenttypesofFooandImtryingtousesmartpointers.我正
I'm designing a Factory that creates different types of Foo and I'm trying to use smart pointers.
我正在设计一个工厂,它创建不同类型的Foo,我正在尝试使用智能指针。
Most seems to be working well, but I am missing some important features (namely nullptr
) because of compiler limitations.
大多数似乎运行良好,但由于编译器的限制,我缺少一些重要的功能(即nullptr)。
I have this method:
我有这个方法:
std::unique_ptr createFoo(const std::string &fooType) {
auto it = _registeredFoo.find(fooType); // _registeredFoo is a map
if(it != _registeredFoo.end())
return std::unique_ptr(it->second());
return std::unique_ptr(NULL);
}
When I test this method, it never returns a NULL
-like pointer.
当我测试这个方法时,它永远不会返回类似NULL的指针。
This is how I test my method.
这就是我测试方法的方法。
std::unique_ptr _foo = FooFactory::getInstance()->createFoo("FOO"); //FOO is registered
if(_foo) {
std::cout <<"Hello, World!" < _bar = FooFactory::getInstance()->createFoo("BAR"); // BAR is unregisered
if(_bar) {
std::cout <<"Hello, World!" <
I always see "Hello, World!"
我总是看到“你好,世界!”
This leads me to believe that my use of std::unique_ptr
's constructor is a bit abusive. Can anyone give me a recommendation for how to approach this without emulating nullptr
myself?
这让我相信我使用std :: unique_ptr的构造函数有点滥用。任何人都可以给我一个如何处理这个问题的建议,而不是自己模仿nullptr吗?
I'm using gcc 4.4.6.
我正在使用gcc 4.4.6。
3 个解决方案