2016-10-01 17 views
-1

この形式を使用して動的配列を作成しようとしています。C++でmake_uniqueを使用してクラスの動的配列を作成する

#include <iostream> 
#include <string.h> 
#include <memory> // for make_unique? 

using std::make_unique; 
using std::string; 

class Kitchen 
{ 
private: 

    auto dynamicArray = make_unique<string[]>(10); 

これは私のKitchen.hファイルにあります。

エラーは次のとおりです。「auto」はここでは使用できません。プライベートの下で "auto"を使用しているか、.hファイルで使用できない可能性があるかどうかはわかりません。

+0

おそらく私のコンストラクタが空であるためですか? – t3hdaniel

+4

クラスメンバーには 'auto'を使用できません。 'std :: vector 'を使ってください。 – Galik

+1

また、 '#include 'の代わりに '#include 'が全く違うはずです。 –

答えて

1

私はあなたが何をしようとしているのか分かりません。動的配列が必要な場合、なぜstd :: vectorを使用しないのですか?以下の例を見て、コンストラクタ内のベクトルを初期化してください。

#include <iostream> 
#include <string> 
#include <vector> 

class Kitchen { 
public: 
    Kitchen() {} 
private: 

    std::vector<std::string> dynamicArray; 
} 

私は、これとは異なるものが必要な場合は、さらに詳細を教えてください。

1

最初に、std::stringの使用には、C互換ヘッダ<string.h>が間違っています。それには<string>を含めてください。

第2に、staticクラス以外のデータメンバーはautoと宣言できません。例えば。 G ++コンパイラは、このように反応する:

 
error: non-static data member declared 'auto' 

第三に、ジャストサイズの動的配列のためstd::vectorを使用しています。コピー可能です。 std::unique_ptrはコピーできません。

関連する問題