c ++私有数组访问和存储

时间:2017-12-12 03:19:45

标签: c++

我需要存储数字并对其求和,但是编译器说a.num [i]是不可访问的...这里是我的代码

class number{
private:
    int num[12];
public:
    number(){
}
    int totalnumber(){
    int total =0;
        for( int i=0 ; i<12 ; i++){
        total= total + num[i];
    }
        return total;
}
};
int main(){
number a;
int a;
    cout<<"Enter number :";
        cin>>a.num[i];
    while(a.num[i] < 0){
        cout<<"You've entered invalid input."<<endl;
        cout<<"Enter number :"<<endl;
        cin>>a.num[i];
    }
    cout<<"Total amount saved is : RM"<<number.totalnumber()<<endl;
    return 0;
    }

我认为数字构造函数需要做一些事情,但我无法弄明白:(。有没有办法可以将数组存储在私有数组中,如同在类号中声明一样?

1 个答案:

答案 0 :(得分:0)

您的代码存在一些问题:

首先,您在&#34; main&#34;中定义了2个具有相同名称的变量。功能:

number a;
int a;

然后你尝试访问变量&#34; i&#34; in&#34; cin&gt;&gt; a.num [i];&#34;但是&#34;我&#34;尚未在&#34; main&#34;中声明功能

我想并且认为您可能尝试使用您的代码实现的是将用户输入的几个数字相加。

在这种情况下,您可能希望使用&#34; for&#34;循环迭代&#34;我&#34;并将读入的数字存储在&#34;数字&#34;的对象中。类。

要存储数字,您可能希望为您的类实现一种方法,因为您无法访问成员变量,例如&#34; int num [12]&#34;当它被宣布为私人成员时从ouside:

void storeNum(int num, int i){
  num[i] = num;
}

第三,你创建了一个类的对象&#34; number&#34;使用名称&#34; a&#34;,但在代码的最后一行,您尝试访问方法&#34; totalnumber&#34;但是你没有指定要调用方法的对象,而是编写了类名。

然后你忘了

#include <iostream>

如果你想访问库函数,这是C ++标准所要求的,这些函数在&#34; iostream&#34;中定义。头文件。此外,您可能想要写

using namespace std;

在文件的顶部,告诉编译器您要将std命名空间中的所有标识符导入当前的命名空间;也就是说,你不想写&#34; cout&#34;而是#34; std :: cout&#34;。

(编辑:为了明确这一点:你永远不应该永远不会写#34;在生产代码中使用命名空间std&#34;从不。除非你学习语言和尝试事情然后它没关系。只是为了以后记住这一点......)

例如,完成的代码可能如下所示:

#include <iostream>
using namespace std;

class number{
private:
    int num[12];
public:
    number(){};
    int totalnumber(){
        int total =0;
        for( int i=0 ; i<12 ; i++){
            total= total + num[i];
        }
        return total;
    }
    void storeNum(int number, int i) {
        num[i] = number;
    }

};

int main(){
    number a;
    for(int i = 0; i < 12; i++) {
    cout << "Enter Number:";
    int num = 0;
    cin >> num;
    a.storeNum(num,i);
    }
    cout<<"Total amount saved is : RM"<< a.totalnumber()<<endl;
    return 0;
    }

希望我能解决你的问题,我帮助你更好地理解C ++语言。

编辑: 我注意到你试图在代码中处理无效的用户输入。这是一个好主意(我假设你至少知道另一种语言;))。但是让语法更正确更重要。您可以稍后担心错误处理......