0

I have a factory for creating containers based on ugly containers

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;
}

How might I go about complementing containerFactory with a factory function which returns const std::vector?

4

1 に答える 1

2

返されたベクトルの定数は関係ありません。値で返されるため、コピーされ、コピーの使用法にconstが適用されます。

ファクトリメソッドでスタック上にベクトルを作成しているため、参照によってベクトルを返すことはできません。

コンテナファクトリの堅牢性の問題として、ファクトリメソッドの引数としてベクトルを取り、それに追加してベクトルのコピーを回避することを検討してください。

于 2012-09-14T15:49:44.517 に答える