这是一个GameBoy的模拟器我一直在工作,我需要包括在这一点上这个头:https://github.com/ryanterry131/JaxBoy/blob/master/src/core/memory/MemoryBus.h#L17C++:我需要在这里包含这个头,我不知道为什么
要不然我得到了相当大的错误,我不明白:
In file included from src/core/GameBoy.cpp:15:
In file included from src/core/GameBoy.h:19:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2535:27: error:
invalid application of 'sizeof' to an incomplete type
'Memory::MemoryController'
static_assert(sizeof(_Tp) > 0, "default_delete can not delet...
^~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2736:13: note:
in instantiation of member function
'std::__1::default_delete<Memory::MemoryController>::operator()' requested
here
__ptr_.second()(__tmp);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2704:46: note:
in instantiation of member function
'std::__1::unique_ptr<Memory::MemoryController,
std::__1::default_delete<Memory::MemoryController> >::reset' requested
here
_LIBCPP_INLINE_VISIBILITY ~unique_ptr() {reset();}
^
src/core/memory/MemoryBus.h:31:7: note: in instantiation of member function
'std::__1::unique_ptr<Memory::MemoryController,
std::__1::default_delete<Memory::MemoryController> >::~unique_ptr'
requested here
class MemoryBus
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4423:26: note:
in instantiation of function template specialization
'std::__1::__shared_ptr_emplace<Memory::MemoryBus,
std::__1::allocator<Memory::MemoryBus>
>::__shared_ptr_emplace<Core::GameBoy *>' requested here
::new(__hold2.get()) _CntrlBlk(__a2, _VSTD::forward<_Args>(__args)...);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4787:29: note:
in instantiation of function template specialization
'std::__1::shared_ptr<Memory::MemoryBus>::make_shared<Core::GameBoy *>'
requested here
return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
^
src/core/GameBoy.cpp:36:23: note: in instantiation of function template
specialization 'std::__1::make_shared<Memory::MemoryBus, Core::GameBoy *>'
requested here
memory_bus = std::make_shared<Memory::MemoryBus>(this);
^
src/core/memory/MemoryBus.h:29:7: note: forward declaration of
'Memory::MemoryController'
class MemoryController;
这大概有事情做与的unique_ptr,但我没有该死的线索需要我包括在MemoryBus头说头。
谢谢。
'sizeof'倾斜测量'MemoryController'类的无_full_定义的大小。前向声明对此不足。我不知道错误“sizeof'到一个不完整类型的错误应用”可以更清楚地说明这个... –
创建unique_ptr总是这样吗? –