【发布时间】:2014-11-22 09:22:58
【问题描述】:
我有一个包含“Buffer”模板类的“SignalProcessingBlock”类。 它们是这样的:
SignalProcessingBlock.h:
class SignalProcessingBlock{
public:
Buffer <class BufferClass> *InputBuffer;
Buffer <class BufferClass> *OutputBuffer;
SignalProcessingBlock *FrontSignalProcessingBlock;
void Process();
};
SignalProcessingBlock.cpp:
#include "SignalProcessingBlock.h"
void SignalProcessingBlock::Process()
{
double tmp;
for (int i=0;i<(this->InputBuffer->BufferSize/2);i++)
{
this->OutputBuffer->buffer[i] = this->InputBuffer->buffer[i*2];
tmp=this->OutputBuffer->buffer[i];
}
}
Buffer.h:
template <class BufferClass> class Buffer
{
public:
int BufferSize;
BufferClass buffer[];
Buffer (BufferClass *buffer,int BufferSize);
};
Buffer.cpp:
#include "Buffer.h"
template <class BufferClass>
Buffer <BufferClass>::Buffer(BufferClass *buffer,int BufferSize)
{
this->buffer=buffer;
this->BufferSize=BufferSize;
}
即使在我尝试执行我需要的操作之前,我也会收到以下错误行:
jni/SignalProcessingBlock.cpp:34:47: error: definition of implicitly-declared 'SignalProcessingBlock::~SignalProcessingBlock()'
In file included from jni/SignalProcessingBlock.h:4:0,
from jni/SignalProcessingBlock.cpp:1:
jni/Buffer.h: In instantiation of 'Buffer<BufferClass>':
jni/SignalProcessingBlock.cpp:42:35: instantiated from here
jni/Buffer.h:9:21: error: 'Buffer<BufferClass>::buffer' has incomplete type
jni/SignalProcessingBlock.h:11:16: error: forward declaration of 'struct BufferClass'
jni/SignalProcessingBlock.cpp: In member function 'void SignalProcessingBlock::Process()':
jni/SignalProcessingBlock.cpp:44:23: error: 'class Buffer<BufferClass>' has no member named 'buffer'
jni/SignalProcessingBlock.cpp:44:54: error: 'class Buffer<BufferClass>' has no member named 'buffer'
jni/SignalProcessingBlock.cpp:45:27: error: 'class Buffer<BufferClass>' has no member named 'buffer'
/cygdrive/d/Development/NDK/android-ndk-r9/build/core/build-binary.mk:348: recipe for target 'obj/local/armeabi-v7a/objs-debug/com_talkitt_beta_NativeWrapper/SignalProcessingBlock.o' failed
make: *** [obj/local/armeabi-v7a/objs-debug/com_talkitt_beta_NativeWrapper/SignalProcessingBlock.o] Error 1
我用 C++ 编写并使用 eclipse Juno,调试和构建是使用 ndk-build(“make”命令包装器)执行的。
我按照书本做所有事情并且不理解错误,我确实有“缓冲区”成员并且语法似乎是正确的。
非常感谢您的帮助!
顺便说一句,堆栈溢出告诉我出于某种原因我需要添加更多信息,所以我只是在写东西
【问题讨论】:
-
Buffer定义在哪里(您是否缺少包含)? -
@SleuthEye 请向下滚动查看Buffer的定义
标签: android c++ android-ndk java-native-interface incomplete-type