2017-05-01 5 views
-3

私はC++デザインの背後にあるロジックの下にいます。ここに私の質問です。 次のコードでは、なぜクラスメンバーシップとして開始できないのですか?クラスのメンバーとメソッド内の異なるベクトル開始の背後にある理由は何ですか?

ベクトルfhd(10);

私は方法

ベクトルABC(10)にそれを開始することができます。

最初の方法でコンパイラが混乱することはありますか?ここで

が完了コード

#include <iostream> 
#include <vector> 

using namespace std; 

class testVector{ 

private: 
    int vl; 
//error reported below 
    vector<int> fhd(10); 
public: 
    testVector(int vl){ 
     this->vl=vl; 
    } 

    vector<int> assVal(){ 
     //OK below 
     vector<int> abc(10); 

     cout << "haha" << endl; 
     for(int iter=0; iter < vl; iter++){ 
      fhd.push_back(iter); 
     } 
     return fhd; 
    } 

    void showVec(){ 
     for(int iter=0; iter < fhd.size(); iter++){ 
      cout<< fhd[iter] << endl; 
     } 
    } 


}; 

int main() { 


    std::cout << "Hello, World!" << std::endl; 

    testVector cj(5); 

    cj.assVal(); 
    cj.showVec(); 
    return 0; 
} 

あるロジックは、我々はそれを行うことができないことの背後には何ですか?私は、このような

vector<int> fhd = vector<int>(10); 
+0

http://en.cppreference.com/wのような構文を使用してそれをデフォルト値を与えることができます

std::array<int, 10> fhd; 

を好むかもしれません/ cpp/language/initializer_list –

+0

' fhd =ベクトル(10);'をC++ 11以降使用することができます。 – Jarod42

+0

私はこれを理解しています。しかし、なぜそれは方法の中でそれを開始することを許さないのですか? C++開発の背後にある論理は何ですか? – drbombe

答えて

0

として、クラスのメンバーとしてそれを行うにはいくつかの代替方法があることを理解し、あなたがベクトル10の固定サイズを持つようにしたいですか?そうならば、あなたは、あなたがそれをベクトルになりたい場合は、あなたが

vector<int> fhd = std::vector<int>(10); 
+0

私はこれを理解しています。しかし、なぜそれは方法の中でそれを開始することを許さないのですか? C++開発の背後にある論理は何ですか?どうもありがとう! – drbombe

関連する問題