質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

7201閲覧

コンパイル時に'dose not name a type'というエラーが出る

yu_89

総合スコア34

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/04/18 09:07

解決したいこと

gnuradio の自作ブロックを作っているのですが、コンパイル時に'dose not name a type'というエラーが出てしまいます。
調べて色々試したのですが、解決しません。何が原因なのでしょうか。

発生している問題・エラーメッセージ

error: ‘Ki’ does not name a type 118 | Ki[i][1] = (Myu4i[i][1] - 4 * Myu3i[i][1] * Myu1i[i][1] + 6 * Myu2i[i][1] * Myu1i[i][1] * Myu1i[i][1] | ^~

該当のソースコード

Kurtosis_c1_impl.h

1#ifndef INCLUDED_KURTOSIS1_KURTOSIS_C1_IMPL_H 2#define INCLUDED_KURTOSIS1_KURTOSIS_C1_IMPL_H 3 4#include <Kurtosis1/Kurtosis_c1.h> 5#include <fftw3.h> 6 7namespace gr { 8 namespace Kurtosis1 { 9 10 class Kurtosis_c1_impl : public Kurtosis_c1 11 { 12 private: 13 int d_N; 14 15 16 fftw_complex* Kr; 17 fftw_complex* Ki; 18 fftw_complex* S1r; 19 fftw_complex* S1i; 20 fftw_complex* S2r; 21 fftw_complex* S2i; 22 fftw_complex* S3r; 23 fftw_complex* S3i; 24 fftw_complex* S4r; 25 fftw_complex* S4i; 26 fftw_complex* Myu1r; 27 fftw_complex* Myu1i; 28 fftw_complex* Myu2r; 29 fftw_complex* Myu2i; 30 fftw_complex* Myu3r; 31 fftw_complex* Myu3i; 32 fftw_complex* Myu4r; 33 fftw_complex* Myu4i; 34 fftw_complex* dcnt; 35 36 fftw_complex* d_inputr; 37 fftw_complex* d_inputi; 38 fftw_plan d_plan; 39 40 public: 41 Kurtosis_c1_impl(int fftsize); 42 ~Kurtosis_c1_impl(); 43 44 45 // Where all the action really happens 46 int work( 47 int noutput_items, 48 gr_vector_const_void_star &input_items, 49 gr_vector_void_star &output_items 50 ); 51 }; 52 53 } // namespace Kurtosis1 54} // namespace gr 55 56#endif /* INCLUDED_KURTOSIS1_KURTOSIS_C1_IMPL_H */ 57

Kurtosis_c1_impl.cc

1#ifdef HAVE_CONFIG_H 2#include "config.h" 3#endif 4 5#include <gnuradio/io_signature.h> 6#include "Kurtosis_c1_impl.h" 7 8namespace gr { 9 namespace Kurtosis1 { 10 11 Kurtosis_c1::sptr 12 Kurtosis_c1::make(int fftsize) 13 { 14 return gnuradio::get_initial_sptr 15 (new Kurtosis_c1_impl(fftsize)); 16 } 17 18 19 /* 20 * The private constructor 21 */ 22 Kurtosis_c1_impl::Kurtosis_c1_impl(int fftsize) 23 : gr::sync_block("Kurtosis_c1", 24 gr::io_signature::make(1, 1, sizeof(gr_complex)), 25 gr::io_signature::make(0, 0, 0)), 26 d_N(fftsize) 27 { 28 d_inputr = d_inputi = (fftw_complex*)fftw_malloc(sizeof(gr_complex) * d_N); 29 Kr = Ki = (fftw_complex*)fftw_malloc(sizeof(gr_complex) * d_N); 30 d_plan = fftw_plan_dft_1d(d_N, d_inputr, d_inputi, FFTW_BACKWARD, FFTW_ESTIMATE); 31 } 32 33 /* 34 * Our virtual destructor. 35 */ 36 Kurtosis_c1_impl::~Kurtosis_c1_impl() 37 { 38 } 39 40 int 41 Kurtosis_c1_impl::work(int noutput_items, 42 gr_vector_const_void_star &input_items, 43 gr_vector_void_star &output_items) 44 { 45 const gr_complex *in = (const gr_complex*) input_items[0]; 46 47 for(int i = 0; i < noutput_items; i++) 48 { 49 d_inputr[i][0] = in[i].real(); 50 d_inputi[i][1] = in[i].imag(); 51 } 52 53 fftw_execute(d_plan); 54 55 for(int i = 0; i < noutput_items ;i++) 56 { 57 S1r[i][0] = S1r[i][0] + d_inputr[i][0]; 58 S1i[i][1] = S1i[i][1] + d_inputi[i][1]; 59 60 S2r[i][0] = S2r[i][0] + d_inputr[i][0] * d_inputr[i][0]; 61 S2i[i][1] = S2i[i][1] + d_inputi[i][1] * d_inputi[i][1]; 62 63 S3r[i][0] = S3r[i][0] + d_inputr[i][0] * d_inputr[i][0] * d_inputr[i][0]; 64 S3i[i][1] = S3i[i][1] + d_inputi[i][1] * d_inputi[i][1] * d_inputi[i][1]; 65 66 S4r[i][0] = S4r[i][0] + d_inputr[i][0] * d_inputr[i][0] * d_inputr[i][0] * 67 d_inputr[i][0]; 68 S4i[i][1] = S4i[i][1] + d_inputi[i][1] * d_inputi[i][1] * d_inputi[i][1] * 69 d_inputi[i][1]; 70 71 dcnt[i][0] = dcnt[i][0] + 1; 72 dcnt[i][1] = dcnt[i][1] + 1; 73 } 74 75 for(int i = 0; i < noutput_items; i++) 76 { 77 Myu1r[i][0] = S1r[i][0] / dcnt[i][0]; 78 Myu1i[i][1] = S1i[i][1] / dcnt[i][1]; 79 80 Myu2r[i][0] = S2r[i][0] / dcnt[i][0]; 81 Myu2i[i][1] = S2i[i][1] / dcnt[i][1]; 82 83 Myu3r[i][0] = S3r[i][0] / dcnt[i][0]; 84 Myu3i[i][1] = S3i[i][1] / dcnt[i][1]; 85 86 Myu4r[i][0] = S4r[i][0] / dcnt[i][0]; 87 Myu4i[i][1] = S4i[i][1] / dcnt[i][1]; 88 } 89 90 /* output average in dB */ 91 92 for(int i = 0; i < noutput_items; i++) 93 } 94 Kr[i][0] = (Myu4r[i][0] - 4 * Myu3r[i][0] * Myu1r[i][0] + 6 * Myu2r[i][0] * Myu1r[i][0] * Myu1r[i][0] 95 - 3 * Myu1r[i][0] * Myu1r[i][0] * Myu1r[i][0] * Myu1r[i][0]) / ((Myu2r[i][0] - 96 Myu1r[i][0] * Myu1r[i][0]) * (Myu2r[i][0] - Myu1r[i][0] * Myu1r[i][0])); 97 98 Ki[i][1] = (Myu4i[i][1] - 4 * Myu3i[i][1] * Myu1i[i][1] + 6 * Myu2i[i][1] * Myu1i[i][1] * Myu1i[i][1] 99 - 3 * Myu1i[i][1] * Myu1i[i][1] * Myu1i[i][1] * Myu1i[i][1]) / ((Myu2i[i][1] - 100 Myu1i[i][1] * Myu1i[i][1]) * (Myu2i[i][1] - Myu1i[i][1] * Myu1i[i][1])); 101 } 102 103 // Tell runtime system how many output items we produced. 104 return noutput_items; 105 } 106 107 } /* namespace Kurtosis1 */ 108} /* namespace gr */ 109

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C++

1/* output average in dB */ 2 3 for(int i = 0; i < noutput_items; i++) 4 } ←ここ

括弧の向きが逆のせいかなと思います。

投稿2022/04/18 09:17

Serbonis

総合スコア581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_89

2022/04/19 09:09

ご回答いただきありがとうございます。 完全に見落としていました。括弧の向きを直したらエラーが出なくなりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問