Опитвам се да дефинирам клас, който може да получи функция за разпределение на обекти и приема оператора new() на шаблонния обект като аргумент по подразбиране. Имам следния код:
template<class _Obj>
class Foo
{
private:
typedef _Obj (_Obj::*fp_alloc_type)();
public:
Foo(fp_alloc_type t=_Obj::operator new ());
...
};
Това дава грешка на компилатора C2039: 'new' : не е член на 'SomeObj'
Компилаторът не генерира ли имплементация по подразбиране на „нов“ за обекти, които не дефинират собствените си? Изпускам ли нещо?
operator new
за вашия клас. Откъде ти хрумна тази идея? - person Nawaz   schedule 28.03.2013::operator new()
- person StoryTeller - Unslander Monica   schedule 28.03.2013template < class T > class allocator
- person andre   schedule 28.03.2013operator new
. Разбира се, ако програмистът напише::new Foo
, той ще използва::operator new()
независимо от това. - person James Kanze   schedule 28.03.2013