ヘッダファイルにオブジェクトを宣言すると、コンパイルエラーが発生します。しかし、アプリケーションのsetup()メソッドで、単にAnalyzer A(44100., "a", 200);
を呼び出して構築することができます。組み込みタイプのオブジェクトを宣言する際に問題があります
このようにすれば、どのようにポインタを保持できますか?コンストラクタ呼び出しが範囲外になったら、オブジェクトにアクセスできなくなりませんか?
また、このオブジェクトのインスタンスを取得する別の方法がありますか?
(私はA = new Analyzer(44100., "a", 200);
を入れて、私のヘッダーにAnalyzer A;
のようなものを入れて、その後、CPPにされるのに使用しています何これ、しかし、コンパイルされません。)。
Analyzer.hh:
class Analyzer {
public:
/// constructor
Analyzer(double rate, std::string id, std::size_t step = 200);
};
Analyzer.cc:
Analyzer::Analyzer(double rate, std::string id, std::size_t step):
m_step(step),
m_rate(rate),
m_id(id),
m_window(FFT_N),
m_bufRead(0),
m_bufWrite(0),
m_fftLastPhase(FFT_N/2),
m_peak(0.0),
m_oldfreq(0.0)
{
/* ... */
}
testApp.h:
#include "Analyzer.hh"
class testApp : public ofSimpleApp{
public:
// *This line gives compilation error
// "No matching function for call to Analyzer::Analyzer()"
Analyzer A;
}
testApp.cpp:
void testApp::setup(){
// *This line compiles, but how will I access
//this object outside of current scope?*
Analyzer A(44100., "a", 200);
}
*初期化*、定義しない*ただし、これは正しい方法です。 –
@Ben Voigtありがとう –