我正在编写一个包含对象数组的类模板。 我收到一条错误,指出"构造函数语法缺少形式参数"。 该错误与代码行DT List [100];
相关联template <class DT>
class List
{
private:
DT List[100];
int numberInList;
int listSize;
int nextIndex;
public:
List();
void insert(DT&);
DT getNext();
bool getMember(DT&);
int getNumber();
};
#endif
template<class DT>
List<DT>::List()
{
numberInList = 0;
listSize = 0;
nextIndex = 0;
}
答案 0 :(得分:0)
对于将来的读者(如@UnholySheep在评论中指出的那样),问题很可能源于成员
main(){
byte* buffer_data;
// (...) buffer_data <- 'h.264 file' - b-frame loaded from disk.
AVBufferRef* pAVBuf = (AVBufferRef*)buffer_data;
AVPacket pkt_demo;
int r = av_packet_from_data(&pkt_demo, buffer_data, lSize);
//or pkt_demo.buf = pAVBuf; ?
decode(codec_ctx, frame, &pkt_demo, fout);
av_packet_unref(pkt);
}
void decode(AVCodecContext* dec_ctx, AVFrame* frame, AVPacket* pkt, FILE* f)
{
int ret;
//send packet to decoder
ret = avcodec_send_packet(dec_ctx, pkt);
if (ret < 0) {
fprintf(stderr, "Error sending a packet for decoding\n");
exit(1);
}
while (ret >= 0) {
// receive frame from decoder
// we may receive multiple frames or we may consume all data from decoder, then return to main loop
ret = avcodec_receive_frame(dec_ctx, frame);
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
printf("i'm on it\n");
return;
}
else if (ret < 0) {
// something wrong, quit program
fprintf(stderr, "Error during decoding\n");
exit(1);
}
printf("saving frame %3d\n", dec_ctx->frame_number);
fflush(stdout);
// display frame on sdl window
displayFrame(frame, dec_ctx);
// send frame info to writing function
pgm_save(frame->data[0], frame->linesize[0], frame->width, frame->height, f);
}
}
。类的名称是DT List[100];
,成员的名称也是。这可能会引起一些解析混乱。更改成员变量的名称应该可以解决该错误。