2017-08-25 4 views
1

C++で複雑なデータのベクトルの特定の要素にアクセスする必要があります。ここで複雑なベクトルを使用しているエラー

は私が持っているものです。

vector< complex<float> > x; // Create vector of complex numbers 
x.push_back(complex<float>(1, 2)); // Place 1 + j2 in vector 
x.push_back(complex<float>(2, 1)); // Place 2 + j1 in vector 

// Attempt at accessing the zero-th elements real part 
float temp1 = x.at(0).real; 
float temp2 = x[0].real; 

これは、Visual Studio 2015で次のエラーを与える:

重大度コード説明プロジェクトファイルの行の抑制状態 エラーC3867「のstd :: _ Complex_base: :real ':非標準構文。あなたはreal()への呼び出しに括弧を忘れてしまった\ユーザー\ジョシュ\ VS_project \ main.cppに101

+0

'x [0] .real()'を使用するか、さらには 'std :: real; ... real(x [0]) '。 – alfC

答えて

2

:opencv_dft Cメンバへのポインタを作成するために使用 '&'。

float temp1 = x.at(0).real(); 
float temp2 = x[0].real(); 

real()はデータメンバーではなく、メンバー関数です。

+0

うわー、あなたは正しいです! – user8919

0

ステートメントx.push_back(complex(float){1,2})でキャストする必要はありませんが、キャストするのに苦労しません。また、vectorとcomplexを使ってステートメントにnamespace stdを使うことも忘れないでください。

また、x.at(0).realのx(0).real();にも忘れないでください。

ここでは、ベクトルと複素数を使ってプログラムを書きました。

#include <iostream> 
#include <complex> 
#include <vector> 

    using namespace std; 

    void main() { 
     complex<float> a = { 1,2 }; 
     a = { 1,4 }; 
     vector<complex<float>> av; 
     av.push_back({ 1,2 }); 
     cout << av.at(0).real(); 
    } 
+0

非常に良い。どうもありがとうございました。 – user8919

関連する問題