Если я объявляю объект в моем заголовочном файле, я получаю ошибку компиляции. Однако я могу создать его в методе setup () моего приложения, просто вызвав Analyzer A(44100., "a", 200);
.
Если я построю это таким образом, как мне сохранить указатель на него? Не станет ли объект недоступным после того, как вызов конструктора выйдет из области видимости?
Или есть ли другой способ получить экземпляр этого объекта?
(То, к чему я привык, это помещать что-то вроде Analyzer A;
в мой заголовок, а затем в cpp - A = new Analyzer(44100., "a", 200);
. Это, однако, не компилируется.)
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);
}