c++-C++类的私有成员中定义了一个数组,怎么在构造函数中初始化这个数组?

问题描述

C++类的私有成员中定义了一个数组,怎么在构造函数中初始化这个数组?

写了这样一个类:

 class Base{
private:
    int r[MAX_SIZE];
    int length;
public:
    Base()
    {
        r[MAX_SIZE] = {1,2,0,5,8,9,7,3,6,4};    //编译的时候在这边出错
        length = 10;
    }
    void swap_data(int,int);
    void Show(const Base &ob);
    friend int Bubble_Sort0(Base &ob);
};

出错原因是:
1.cpp: In constructor ‘Base::Base()’:
1.cpp:13: 警告:extended initializer lists 只在 -std=c++0x 或 -std=gnu++0x 下可用
1.cpp:13: 错误:不能将‘’转换为‘int’,在 assignment 中
请问各位大神,这是什么意思?有什么解决办法?

解决方案

你这种复制方式只能在定义数组时使用,定义完了以后都只能用循环逐个复制。

解决方案二:

在构造函数里,只能这样:

r[0]=1;
r[1]=2;
r[2]=0;
。。。

诸如此类。因为构造函数的时候已经是执行部分,不是定义部分了。
或者你可以在定义的时候这样写

class Base{
private:
    int r[MAX_SIZE]={1,2,0,5,8,9,7,3,6,4};
    int length;
        。。。。。。

解决方案三:

你把私有的数组定义成指针吧,然后初始化的时候把数组指针给它就行了

解决方案四:

构造函数已经是执行部分,对于执行部分的数组赋值,只能循环逐个赋值。

解决方案五:

数组初始化时才能这样赋值,如 int r[MAX_SIZE] = {1,2,0,5,8,9,7,3,6,4};
对于已经定义的 int r[MAX_SIZE] , 只能一个个来: r[0]=1; r[1]=2; r[2]=0; ……

解决方案六:

你的做法只能在数组初始化的时候才可以,赋值的时候是不支持的这么做的

你在构造函数做的是赋值操作,不是初始化。

时间: 2024-12-29 05:21:33

c++-C++类的私有成员中定义了一个数组,怎么在构造函数中初始化这个数组?的相关文章

编程-C++数组作为类的私有成员求助

问题描述 C++数组作为类的私有成员求助 定义一个Employee类,其中包括姓名.街道地址.城市和邮编等属性,以及changeName()和display()等函数.display()显示姓名.街道地址.城市和邮编等属性,changeName()改变对象的姓名属性. 在employee.h文件中定义Employee类.Employee类具有姓名.街道地址.城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数st

C#箴言之用属性来访问类的私有成员

访问|来访 在程序中,难免要访问某个对象的私有成员.那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从"private"改为"public"即可:而另一个就是提供公有的成员访问函数来进行访问.那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成. 首先来看看三种方法的如何实现以及调用的,这里用一个例子来说明,即访问"EmployeeInfo"类的私有成员strName,具体如下表格所示.   pri

C++中用#define访问类的私有成员

我们知道,类的私有成员在类的外部是不能被访问的. 例如有下面的这个简单的类: class ClxECS{private:int iPrivate;}; 那么下面的这个函数是不能通过编译的: void ECS_test(){ClxECS lx;lx.iPrivate = 13; cout << lx.iPrivate << endl;} 但是,我们并不是没有办法来访问类的私有成员. 其实,方法很简单,只要在类的声明前面加上如下一行代码就行了: #define private publ

c++-C++ 类内函数以引用作为返回值(例如返回类内私有成员变量)

问题描述 C++ 类内函数以引用作为返回值(例如返回类内私有成员变量) 主函数中用参数a接受这个返回值,那么对a的改变会引起私有成员变量的改变吗? 解决方案 返回了引用就可以修改它指向的变量.这种方式通过函数来达到修改内部变量的方式.从而改变封装的行为.不过一般要清楚这么做的目的 解决方案二: 作为引用的变量,相当于一个别名:原理上是指向同一块内存,因此对引用变量的修改就会导致原始变量跟着修改. 解决方案三: 同一个对象当然会改变.通过共有方法将私有成员传出来是很常见的做法,比如设计模式中的单例

c++-用友元类外函数调用类的私有成员,显示无法调用,是什么原因

问题描述 用友元类外函数调用类的私有成员,显示无法调用,是什么原因 #include #include using namespace std; class Date; class Time { private: int hour; int minute; int sec; public: Time(int h, int m, int s) :hour(h), minute(m), sec(s){} friend void display(Time & , Date & ); }; cla

ORACLE 中定义全局变量,在其他各个PROCEDURE中使用

问题描述 ORACLE 中定义全局变量,在其他各个PROCEDURE中使用 如何在ORACLE中定义一个全局性的常量类,在其他的各个存储过程中调用使用: 类似与JAVA中得常量类这样. 我目前想到两种方案, 1,定义一个表,在这个表中录入各种变量,如何在存储过程中调用(感觉存储过程中,还是硬编码了一些东西) 2,写一个存储过程包,里面都定义function,一个function返回一个变量值(感觉一个变量写一个function太麻烦) 请问各路大神,有没有那种类似JAVA 或者C中,定义一个常量

数据-程序中定义的全局变量,list 在input中已经赋值,为什么print函数中List=null?

问题描述 程序中定义的全局变量,list 在input中已经赋值,为什么print函数中List=null? #include #include #define N 4 struct node{ int score; struct node*link; }; struct node node; struct node*list,*p,*r,*q; void input(struct node*list) { int i; int ch; for(i=0;i { printf("please in

在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下

问题描述 在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下 我是想要定义一个二维数组,然后动态地给它赋值,应该怎么做不知道问题出在做么地方,请大神指导一下 ,代码如下: int[][] a = null; a[1] = new int[]{1,2,3}; System.out.println(a[1][1]); 解决方案 int[][] a = null; a = new int[5][];//第一维需要初始化 a[1] = new int[]{1,2,3};//这是第二维

dtd-xml中定义为DefaultValue的属性在浏览器中没显示出来

问题描述 xml中定义为DefaultValue的属性在浏览器中没显示出来 xml中的代码: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE CATALOG SYSTEM "4.DTD"> <CATALOG> <PRODUCT NAME="ff" > <SPECIFICATIONS WEIGHT="1221&quo