仅静态方法指向类的指针

问题描述

有没有办法获得仅由静态方法组成的类的指针?没有成员变量。

我有一个使用typename alloc = allocator<T>作为模板参数之一的向量类。 allocator<T>模板类完全由静态方法组成。我打算实现一个get_allocator方法,该方法提供对给定向量分配器方法的访问。例如。这样才能起作用:

int main() {
    custom::vector<int> my_vector(10); // custom int-vector of initial size and capacity 10
    
    // use my_vector's allocator<int> instead of new (don't ask why)
    int* my_array = my_vector.get_allocator()->allocate(5); 
    // ^^ rhs should produce same result as new int[5]. allocator<T>::allocate uses ::operator new.
}

custom::vector内部,我有这种方法

alloc* get_allocator() {
    return &alloc
}

这将引发MSVC 编译器错误2275:“分配”:非法将此类型用作表达式typename前缀添加到签名无济于事。

分配器类如下:

template <typename T>
class allocator : public mem_core::base_allocator<T> {
public:

    using value_type = T;
    using T_ptr = T*;
    using T_ref = T&;

    static T_ptr address(T_ref value) noexcept {
        return mem_core::addressof<T>(value);
    }

    static void deallocate(T_ptr const ptr,const size_t& count) {
        mem_core::deallocate<T>(ptr,count);
    }

    static T_ptr allocate(const size_t& amount) {
        return mem_core::allocate<T>(amount);
    }
private:
    allocator() = default;
};

解决方法

您不能仅指向类型对象(例如<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="landing-hov-s"> <div class="hov-sq"></div> <div class="hov-sq"></div> <div class="hov-sq"></div> <div class="hov-sq"></div> <div class="hov-sq"></div> <div class="hov-sq"></div> </div> <div class="c-1"> <h1>Laurent<br>&nbsp;&nbsp;&nbsp;Chevrette</h1> </div>)。因此,要么创建一个对象并返回指向它的指针,要么直接通过类型使用静态函数:

&int