[解決済み] 文字列定数の前にunqualified-idを指定する必要があります。
2022-02-01 13:23:57
質問
私は現在、math.hと連携してオシレータを実装したC++アプリケーションを書いています。私が持っているコードは、アプリケーション(オブジェクトファイルをコンパイルしようとしている)には正常に動作するはずですが、私は、構文などに関係していると思われるコンパイラーエラーが発生しました。このエラーは
端末の出力です。
User-Name-Macbook-Pro:Synth Parts UserName$ make
g++ -o Oscillators.o -c -I. Oscillators.cpp -c
In file included from Oscillators.cpp:2:
/usr/include/math.h:41: error: expected unqualified-id before string constant
In file included from /usr/include/c++/4.2.1/bits/locale_facets.tcc:42,
from /usr/include/c++/4.2.1/locale:46,
from /usr/include/c++/4.2.1/bits/ostream.tcc:46,
from /usr/include/c++/4.2.1/ostream:635,
from /usr/include/c++/4.2.1/iostream:45,
from Oscillators.cpp:4:
/usr/include/c++/4.2.1/typeinfo:41: error: expected declaration before end of line
make: *** [Oscillators.o] Error 1
発振器.cpp
#include "Oscillators.h"
#include <math.h>
#include <vector>
#include <iostream>
#define TWOPI (6.2831853072)
using namespace std;
oscillator(int srate = 44100, int tabsize = 8192, double freq = 200) // Default to output 200Hz Sine Wave
{
if(srate <= 0) {
cout << "Error: sample rate must be positive" << endl;
return;
}
sizeovrsr_ = (double)tabsize / (double)srate
if(freq < 20 || freq > 20000) {
cout << "Error: frequency is out of audible range" << endl;
return;
}
curfreq_ = freq;
curphase_ = 0.0 // Not out of one, out of tabsize
incr_ = curfreq * sizeovrsr_;
for(int i = 0; i < tabsize; i++) {
gtable.push_back(sin((i*TWOPI)/(double)tabsize));
}
gtable.push_back(gtable[0]);
}
void print_table()
{
vector<double>::size_type i;
for(i = 0; i < gtable.size(); i++)
cout << gtable[i] << "\n";
cout << endl;
}
発振器.h
#ifndef GUARD_OSCILLATORS_H
#define GUARD_OSCILLATORS_H
#include <vector>
class oscillator {
public:
/*
void fill_sine(); // Will change the table to a sine wave
void fill_square(); // Will change the table to a square wave
void fill_sawtooth(); // Will change the table to a sawtooth wave
void fill_triangle(); // Will change the table to a triangle wave
double tick(double freq); // Will output the current sample and update the phase
*/
void print_table(); // Will print all table values to standard output
oscillator(int srate = 44100, double freq = 200, int tabsize = 8192);
private:
double sizeovrsr_; // Will be set at initialization and will determine phase increase for tick func
double curphase_;
double curfreq_; // if the freq sent to a tick function doesn't match the current tick, it will be reset;
double incr_;
std::vector<double> gtable_; // Will contain a wavetable with a guard point.
}
#endif
g++ -Wall -gを使うという他の提案も見ましたが、それが問題なのかどうか、何か別の問題があるのではないかと思います。
どんなことでもご相談ください。ありがとうございます!
解決方法は?
これは簡単な問題です。
ヘッダーファイルの最後のセミコロンを忘れているだけです。
クラス定義の最後にセミコロンがないために起こるコンパイラ・エラーは、実際の問題と関連づけるのが非常に困難です。クラスを作成した後にエラーが発生したら、それを確認する習慣をつけるだけでよいのです。
関連
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] C++でintをstringに変換する最も簡単な方法
-
[解決済み】静的定数文字列(クラスメンバ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。