c++ - 如何在新调用中使用更多参数?

标签 c++ constructor operator-overloading

抱歉,如果“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/

相关文章:

c++ - 将 int 数组转换为可变参数模板

node.js - 如何从nodejs中的构造函数发出/捕获事件?

c++ - 为什么在这种情况下不调用复制构造函数?

c# - 否定运算符 (!) 的重载应该有什么类型?

c++ - 在 C++ 中将某种结构化的文本文件读入数组

c++ - 检查数组中的所有对是否都可以被 k 整除

javascript - 覆盖原型(prototype)属性或函数

c++ - 将 ostream 重定向到文件不起作用

c++ - 类数据的重载+运算符

c++ - Gnu Makefile - 处理依赖项