2017-03-27 25 views
0

私は、参照として関数にベクトルを渡し、関数内のベクトルを変更するという簡単な作業をしようとしています。 はしかし、私は次の例では、かなり不可解なエラーを取得:関数への参照としてのベクトルの受け渡し

// data.h 
class data { 
public: 
    std::string a; 
    double b; 
    uint8_t c; 
}; 

私たちは、メインウィンドウのクラスでこれらのデータオブジェクトのベクトルを作る:

// MainWindow.h 
class MainWindow { 
public: 
    std::vector<data> vec; 
    void needs_vec(std::vector<data> &vec); 
}; 

私はトラブルの機能を持っているの下に、 MainWindowオブジェクトのコンストラクタとともに、すべてが一緒になる場所です。

// other_file.h 
void needs_vec(std::vector<data> &vec) { 
    for (auto &vec: vec) { 
    vec.b = get_a_number(); 
    } 
}; 

// MainWindow.cpp 
MainWindow::MainWindow() { 
    // Read a configuration file and initialize the vector 
    this->vec = read_config(); 

    // Try to apply our function 
    needs_vec(this->vec); 

    // Continue doing other things 
}; 

私はまた、右辺値参照で遊んでみましたが、私は、同様の結果満たし:解読できない20ページのエラーメッセージを。

+0

'vec.double = get_a_number();'これは大きなポインティング矢印のようなものです。 – DeiDei

答えて

1

クラスdataは、doubleというdoubleという値がなく、bという値です。

は、これらの変更の適用:さらに

void MainWindow::needs_vec(std::vector<data> &vec) { 
    for (auto &vec: vec) {  // Change the name here 
    vec.b = get_a_number(); 
    } 
} 

を、あなたは};、閉じ括弧とセミコロンを使用してクラスを閉じていますか?

例えば

// data.h 
class data { 
public: 
    string a; 
    double b; 
    uint8_t c; 
} /* including ";"?? */ 
+0

同じ名前を呼び出すのは、C++のように実際には問題ではありません。 – DeiDei

+0

コンパイラだけが混乱しません。 – stark

+0

申し訳ありません。歓迎される。ありがとうございました! – 0xDEFACED

関連する問題