Não tem nada de errado com estas linhas, é um ponteiro para uma classe base
recebendo um objeto derivado.
> Dúvida 2: o código abaixo será executado? Em caso negativo, o que está
> errado?
> cout << shape[0]->getNome() << endl;
> cout << shape[1]->getNome() << endl;
Você deve colocar assim:
std::cout << shape[0]->getNome() << std::endl;
std::cout << shape[1]->getNome() << std::endl;
ou então coloca esta linha logo antes do "main()":
using namespace std;
> return 1;
> }
>
class Circle : public Shape {
public:
virtual char* getNome() {
return "Circle";
}
};
class Square : public Shape {
public:
virtual char* getNome() {
return "Square";
}
};
Acho que é isso...
Então, eu disse "Acho" por que justamente tive um problema semelhante, que eu
não lembro qual foi a solução, mas se não me engano foi com algo assim:
cupostamente deveria funcionar de forma X mas o compilador fazia Y. Não tenho
certeza mesmo, só dei um palpite de intrometido mesmo. ;-)
É opcional, mas como eu disse e outros disseram é quase obrigatório colocar né hehe =D
Escrevi uma aplicação usando as api do alsa para gravar e reproduzir
som. Junto, eu estou implementando uma analize de fourier, usando a
biblioteca fftw: http://www.fftw.org/!
Ai que está o problema. É utilizado um ring buffer tanto para leitura
quanto para escrita.
Eu preciso fazer com que esse IN sejá um ponteiro para meu ring buffer.
Algêm pode me dar uma ajuda.
O código está assim:
void capture_go(int fd, off64_t count, int rtype, char *name)
{
size_t c;
off64_t cur;
ssize_t r, err;
* fftw_complex *in, *out;
fftw_plan p;
** in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * 44100);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * 44100);*
* in = audiobuf; *********(isso aqui que eu não consigo
fazer)*************
header(rtype, name);
set_params();
* p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
* do {
for (cur = count; cur > 0; cur -= r) {
c = (cur <= chunk_bytes) ? cur : chunk_bytes;
c = c * 8 / bits_per_frame;
if ((size_t)(r = pcm_read(audiobuf, c)) != c)
*
*
break;
r = r * bits_per_frame / 8;
if ((err = write(fd, audiobuf, r)) != r) {
perror(name);
exit(EXIT_FAILURE);
}
if (err > 0)
fdcount += err;
}
} while (rtype == FORMAT_RAW && !timelimit);
}
Muito Obrigado
Nope,
bash-3.1$ gcc -g -I/usr/local/include -L/usr/local/lib -lfftw3
-lasound aplay.c -o gravar
E estou encontrando o seguinte erro:
bash-3.1$ gcc -g -I/usr/local/include -L/usr/local/lib -lfftw -lasound
aplay.c -o gravar
aplay.c: In function 'set_params':
aplay.c:254: warning: 'snd_pcm_sw_params_get_xfer_align' is deprecated
(declared at /usr/include/alsa/pcm.h:1112)
aplay.c:261: warning: 'snd_pcm_sw_params_set_sleep_min' is deprecated
(declared at /usr/include/alsa/pcm.h:1113)
aplay.c:289: warning: 'snd_pcm_sw_params_set_xfer_align' is deprecated
(declared at /usr/include/alsa/pcm.h:1111)
aplay.c:797:2: warning: no newline at end of file
/usr/lib/gcc/i486-slackware-linux/4.2.4/../../../../i486-slackware-linux/bin/ld:
cannot find -lfftw
collect2: ld returned 1 exit status
Gostaria de saber se estou fazendo a linkagem certa... essa biblioteca
deveria estar dentro da /usr/local/lib não é?
Uso slack 12.2
Muito obrigado