相关疑难解决方法(0)

什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?

有什么用途:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast
  • C风格演员 (type)value
  • 功能式演员 type(value)

如何决定在哪些特定情况下使用哪个?

c++ pointers casting c++-faq

2367
推荐指数
9
解决办法
52万
查看次数

为什么C++在创建数组时不允许`new`调用构造函数

假设您正在堆上创建一个目标数组,如下所示:

myClass * objectPtr = new myClass[10];
Run Code Online (Sandbox Code Playgroud)

new 只调用默认构造函数,并且(根据我的读数)不允许调用任何其他构造函数.

是否有任何逻辑背后为什么new不能调用任何其他构造函数?做类似的事情似乎更好

myClass * objectPtr = new myClass[10](12);
Run Code Online (Sandbox Code Playgroud)

而不是

myClass * objectPtr = new myClass[10];
objectPtr[0] = myClass(12);
objectPtr[1] = myClass(12);
...
Run Code Online (Sandbox Code Playgroud)

c++ arrays constructor new-operator

10
推荐指数
1
解决办法
584
查看次数

带有需要 C++ 参数的构造函数的新对象数组

在开始我的问题之前,我要说的是,我知道我可以使用标准库或 gsl 库(例如std::Vector)轻松解决我的问题。但我正在尝试学习 C++ 和动态内存分配,所以我想知道是否有一种方法可以在不使用 Vector 或类似的东西的情况下解决它。

我有一个Layer类,其中包含创建对象时确定的多个神经元(通过动态内存分配):

class Layer {
private:
    unsigned int _size;
    const Neuron* _neurons;

public:
    Layer(unsigned int size);
    ~Layer();

    const Neuron* getNeuron(unsigned int index) const;
};

Layer::Layer(unsigned int size) {
    _size = size;
    _neurons = new Neuron[size];
}

const Neuron* Layer::getNeuron(unsigned int index) const {
    Expects(index < _size);

    return &_neurons[index];
}

Layer::~Layer() {
    delete[] _neurons;
}
Run Code Online (Sandbox Code Playgroud)

现在的挑战是在Network课堂上:我需要创建一个 n 层网络,每个层包含不同数量的神经元(作为长度为 n 的数组传递):

class Network {
private:
    unsigned int _nb_layers;
    const Layer* …
Run Code Online (Sandbox Code Playgroud)

c++ constructor dynamic-memory-allocation

5
推荐指数
1
解决办法
2529
查看次数

C++动态分配类数组

假设a class X具有构造函数X(int a, int b)

我创建了一个指向X的指针,X *ptr;为类动态分配内存.

现在创建一个X类对象数组

 ptr = new X[sizeOfArray];
Run Code Online (Sandbox Code Playgroud)

到现在一切都很好.但我想要做的是创建上面的对象数组应该调用构造函数X(int a, int b).我尝试如下:

ptr = new X(1,2)[sizeOfArray]; 
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它给了我编译时错误

错误:预期';' 在'['标记|之前

如何创建一个对象数组来调用构造函数?

SizeOfArray 用户在运行时输入.

编辑: 我想要达到的目标是不可能的,如天顶所回答的那样,或者太复杂了.那我std::vector该如何使用呢?

c++ dynamic-allocation

4
推荐指数
1
解决办法
952
查看次数

C++ 使用 new 创建带有初始化程序的对象数组

我写了一个类,像这样(仅用于演示):

class cls{
public:
    cls(int a):value(a){}
private:
    int value;
};
Run Code Online (Sandbox Code Playgroud)

我想动态创建一个数组,每个元素初始化为一个特定的值,如 2:

cls *arr = new cls[N](2);
Run Code Online (Sandbox Code Playgroud)

但是 g++ 报告了“错误:数组 new 中的括号初始化器”。

我在互联网上搜索,但只找到了类似int and等基本类型的类似问题double,答案是 NO WAY。

假设类必须被初始化,如何解决问题?我必须放弃构造函数吗?

c++ arrays initialization

2
推荐指数
2
解决办法
1万
查看次数

如何通过调用非默认构造函数来构造对象数组?

我有一个hi带有非默认构造函数的类,它带有两个参数.我正在尝试构造一个his 数组:

class hi {
  public:
    hi(int a, int b){};
};

int main() {
  hi *hello;
  int number_of instance = 5;
  hello = new hi[number_of_instance]; // (1)
}
Run Code Online (Sandbox Code Playgroud)

如何hi::hi(int,int)在标记的线上调用(1)

c++ arrays constructor pointers

-1
推荐指数
1
解决办法
83
查看次数