抱歉,如果“new call”不是 C++ 术语。如果不是,请告诉我什么是正确的术语。我是一名从 C++ 开始的 C 程序员。我有 struct A
,我想使用 new
运算符中的参数对其进行初始化。像这样:
A* a = new A(foo, baa);
所以,我尝试使用它来定义函数:void* A::operator new(T a, T B) { ... }
但是我得到一个编译器错误:
error: 'operator new' takes type size_t ('unsigned int') as first parameter
此外,不确定它是否相关,但是已经定义了重载 size_t
类型参数的函数,如下所示:
void* A::operator new(size_t size) { ... }
最佳答案
您不需要为此重载operator new
。你只需要一个构造函数:
class A
{
public:
A(FooType foo, BaaType baa);
};
A::A(FooType foo, BaaType baa)
{
// initialize object here
}
然后你可以写(假设你已经获得了一个 FooType
类型的变量 foo
等等):
A *a = new A(foo, baa);
关于c++ - 如何在新调用中使用更多参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244705/