如何从构造函数声明新的私有变量?

k3y_1

我想将不同大小的二维数组传递给我的类并将数组存储为私有成员变量。

当我尝试在构造函数中声明数组时,出现错误。

我应该如何从构造函数声明私有变量?

如果不可能,我还能做些什么来使我的班级灵活适应不同的数组大小?

这是文件:

#ifndef NUMCPP_H
#define NUMCPP_H

class numcpp
{
public:
    numcpp(int *Arr,int *Shape,int Dims);
private:
    int *shape;
    int dims;
};

#endif

这是文件:

#include <iostream>
#include "numcpp.h"
using namespace std;

numcpp::numcpp(int *Arr,int *Shape,int Dims) // *arr points to input array's first element
{
    shape = Shape;
    dims = Dims;
    int i = shape[0];
    int j = shape[1];
    int numcpp::array[i][j]; // error happens in this line
    //assigning input array to our variable
    for (int x = 0; x < i; x++)
    {
        for (int y = 0; y < j; y++)
        {
            array[x][y] = *(arr + (x * i) + y);
        };
    };
};
暗影游侠

类必须有一个编译时固定的大小,所以一个真正灵活的数组成员是不可能的。你能做的最好的事情是:

  1. 在数组维度上模板化类(编译时选择固定大小)
  2. 使用动态可调整大小的类型std::vector<std::vector<int>>来获得功能相似的东西(运行时动态选择的大小);类本身保持固定大小,vector将动态分配的数组存储在空闲存储(堆)上。

一种实现方法看起来像这样(在类声明std::vector<std::vector<int>> array;private部分添加一个声明):

// Use initializers to initialize directly instead of default initializing, then replacing
numcpp::numcpp(int *arr,int *Shape,int Dims) : shape(Shape), dims(Dims), array(shape[0], std::vector<int>(shape[1]))
{
    int i = shape[0];
    int j = shape[1];
    for (int c = 0; c < i * j; ++c) {
        array[c / j][c % j] = arr[c];
    }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问声明函数中的私有变量

来自分类Dev

具有私有构造函数的F#结构声明

来自分类Dev

如何在构造函数中使用公共公用函数访问私有变量

来自分类Dev

从构造函数到私有变量存储函数指针

来自分类Dev

具有构造函数原型的JavaScript私有变量

来自分类Dev

AngularJS如何在控制器中声明私有变量和函数

来自分类Dev

AngularJS如何在控制器中声明私有变量和函数

来自分类Dev

将私有变量传递给基类构造函数

来自分类Dev

在构造函数中使用私有变量或属性

来自分类Dev

为什么我的构造函数的“this”变量保持私有?

来自分类Dev

如何扩展具有私有构造函数的对象?

来自分类Dev

使类构造函数私有

来自分类Dev

使用私有构造函数

来自分类Dev

使类构造函数私有

来自分类Dev

在类声明中,为什么构造函数中的参数不能与私有部分中定义的变量具有相同的名称?

来自分类Dev

在构造函数内部声明变量有什么用

来自分类Dev

如何使用私有构造函数测试最终类?

来自分类Dev

如何在单独的类中访问私有构造函数?

来自分类Dev

如何在javascript中定义私有构造函数?

来自分类Dev

如何使用私有构造函数从类创建对象?

来自分类Dev

Groovy / Grails如何使构造函数私有-正确的方法

来自分类Dev

如何在javascript中定义私有构造函数?

来自分类Dev

如何在类构造函数本身启动线程的类中将值设置为私有变量?

来自分类Dev

如何处理JavaScript中的构造函数中声明的变量?

来自分类Dev

如何为构造函数采用右值的类声明变量?

来自分类Dev

如何从方法访问构造函数中声明的变量?

来自分类Dev

如何在es6类中声明私有变量和私有方法

来自分类Dev

私有内部类的构造函数应该声明为public还是private?

来自分类Dev

从构造函数传递到成员函数时,私有成员变量为null

Related 相关文章

  1. 1

    访问声明函数中的私有变量

  2. 2

    具有私有构造函数的F#结构声明

  3. 3

    如何在构造函数中使用公共公用函数访问私有变量

  4. 4

    从构造函数到私有变量存储函数指针

  5. 5

    具有构造函数原型的JavaScript私有变量

  6. 6

    AngularJS如何在控制器中声明私有变量和函数

  7. 7

    AngularJS如何在控制器中声明私有变量和函数

  8. 8

    将私有变量传递给基类构造函数

  9. 9

    在构造函数中使用私有变量或属性

  10. 10

    为什么我的构造函数的“this”变量保持私有?

  11. 11

    如何扩展具有私有构造函数的对象?

  12. 12

    使类构造函数私有

  13. 13

    使用私有构造函数

  14. 14

    使类构造函数私有

  15. 15

    在类声明中,为什么构造函数中的参数不能与私有部分中定义的变量具有相同的名称?

  16. 16

    在构造函数内部声明变量有什么用

  17. 17

    如何使用私有构造函数测试最终类?

  18. 18

    如何在单独的类中访问私有构造函数?

  19. 19

    如何在javascript中定义私有构造函数?

  20. 20

    如何使用私有构造函数从类创建对象?

  21. 21

    Groovy / Grails如何使构造函数私有-正确的方法

  22. 22

    如何在javascript中定义私有构造函数?

  23. 23

    如何在类构造函数本身启动线程的类中将值设置为私有变量?

  24. 24

    如何处理JavaScript中的构造函数中声明的变量?

  25. 25

    如何为构造函数采用右值的类声明变量?

  26. 26

    如何从方法访问构造函数中声明的变量?

  27. 27

    如何在es6类中声明私有变量和私有方法

  28. 28

    私有内部类的构造函数应该声明为public还是private?

  29. 29

    从构造函数传递到成员函数时,私有成员变量为null

热门标签

归档