使用展示位置new在另一个函数中使用args调用构造函数

问题描述

我有一个出于各种原因而不允许具有复制构造函数的类(一个原因是该结构具有指向我既不想删除多次,也不想复制/克隆的数组的指针)它)。

我想用push函数构造对象。喜欢推到阵列上。我有以下测试代码,但似乎无法使用构造调用它(除非它是我明确不想要的复制构造函数)。

要清楚,在准备好将其放置在数组中之前,不应构造该对象,这就是为什么我使用new放置的原因

#include<utility>
#include<cstdlib>
#include<new>
struct Test{
    int a,b,*p;
    Test(int a,int b) : a(a),b(b),p(nullptr) { }
    Test(const Test&) = delete;
};

Test*ptest;
int offset;

template<typename... Args>
void Push(Args&&... args) {
    new (&ptest[offset++]) Test(std::forward<Args>(args)...);
}

int main(){
    ptest = (Test*)malloc(sizeof(Test)*10); //Array of 10
    Push(Test{5,1});
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)