クラスにメンバー変数std::vector<std::string>
があり、 と の組み合わせを使用して、メンバー関数から不変ビューとしてそれを返したいとしgsl::array_view
ますgsl::cstring_view
。残念ながら、以下はコンパイルされません。
class C {
public:
gsl::array_view<const gsl::cstring_view<>> getVectorOfStrings() const
{
return _vectorOfStrings;
}
private:
std::vector<std::string> _vectorOfStrings;
};
cstring_view
これは、array_view
を作成できるコンテナーがないためです。だから私の質問は: type のメンバーのようなものを明示的に追加せずにそのような構造を使用する方法はありstd::vector<gsl::cstring_view<>>
ますか?これは明らかに望ましくありませんか?
編集
そのような「変換」ビューは、より一般的に使用できるように思えます。実装定義のストレージ アプローチを公開せずに、生のポインターとしてクラスのユーザーに公開したいvector
などの所有ポインターを持つことを検討してください。考え?std::vector<std::shared_ptr<T>>
array_view
gsl::array_view<const T*>