工厂函数返回const

时间:2012-09-14 15:32:00

标签: c++

我有一个基于丑陋容器创建容器的工厂

template<class T>
std::vector<T> containerFactory(const UglyContainer* uglyContainer)
{
    std::vector<T> container(uglyContainer->count);
    Getter getter;
    for(unsigned int i=0;i<uglyContainer->count;++i)
    {
        getter(container[i], uglyContainer->values[i]);
    }
    return container;
}

如何使用返回const std :: vector的工厂函数来补充containerFactory?

1 个答案:

答案 0 :(得分:2)

返回的向量上的Const无关紧要。由于它是按值返回的,因此将被复制并且const将应用于副本的使用。

由于您在工厂方法中在堆栈上创建向量,因此无法通过引用返回向量。

作为容器工厂的健壮性,您可以考虑将向量作为工厂方法的参数并附加到它以避免向量的副本。