gpt4 book ai didi

C++ 垃圾收集、模板和运算符覆盖 - 无法理解为什么会抛出错误

转载 作者:行者123 更新时间:2023-11-28 01:08:52 26 4
gpt4 key购买 nike

我正在尝试编译一个文件,该文件定义了一个垃圾收集模板和几个使用运算符重载的支持类。我试图通过 MSVC++ 2008 运行它,编译在这个特定的类停止:

// (The collector defines gc_object_generic_base which
// inherits from gc_object_generic_base and optionally adds
// collector-specific properties.)

template<class garbage_collector>
class gc_object_base : public garbage_collector::gc_object_collector_base {
public:
gc_object_base() {
garbage_collector::constructing_gc_object_base(this);
}

static void* operator new(size_t sz,
block_construction_locker_base* lock = block_construction_locker<garbage_collector>().get_this())
{
return garbage_collector::allocate(sz, lock);
}
static void operator delete(void* p, block_construction_locker_base* lock) {
return garbage_collector::deallocate(p);
}
static void operator delete(void* p) {
return garbage_collector::deallocate(p);
}

private:
// TODO: are arrays worth implementing?
static void* operator new[](size_t sz) {
assert(0);
return 0;
}
};

为简洁起见截断输出:

2>------ Build started: Project: Test, Configuration: Debug Win32 ------2>Compiling...2>FlashTest.cc2>C:\test\gameswf\base\tu_gc.h(133) : error C2059: syntax error : 'string'2>        C:\test\gameswf\base\tu_gc.h(151) : see reference to class template instantiation 'tu_gc::gc_object_base' being compiled2>C:\test\gameswf\base\tu_gc.h(135) : error C2091: function returns function2>C:\test\gameswf\base\tu_gc.h(135) : error C2802: static member 'operator new' has no formal parameters2>C:\test\gameswf\base\tu_gc.h(135) : error C2333: 'tu_gc::gc_object_base::operator new' : error in function declaration; skipping function body

关于我应该从哪里开始研究的任何想法?

最佳答案

我只是在不同的项目中遇到了相同的错误模式。当有人在某个地方这样做时,它似乎会发生:

#define new new(someArgs, someMoreArgs, etc)

它针对的是简单的"new"表达式,但如果有人试图声明任何更多“运算符新”的东西,它就会崩溃。

关于C++ 垃圾收集、模板和运算符覆盖 - 无法理解为什么会抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4616812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com