Arrays 通过C+;中的类函数访问动态分配的数组是否有限制+;?

Arrays 通过C+;中的类函数访问动态分配的数组是否有限制+;?,arrays,function,class,visual-c++,Arrays,Function,Class,Visual C++,这是我为一个类编写的程序的开始,我试图让它读取一个包含大量浮点的文件。使用替身应该不是问题。我假设使用array1.readDataFromFile()调用我的函数; 是否将访问array1结构中动态创建的数组?但是当 这是头文件 // Specification file for the NuberArrayClass //a.k.a NumberArrayClass.h file #ifndef NUMBERARRAYCLASS_H #define NUMBERARRAYCLASS_H

这是我为一个类编写的程序的开始,我试图让它读取一个包含大量浮点的文件。使用替身应该不是问题。我假设使用array1.readDataFromFile()调用我的函数; 是否将访问array1结构中动态创建的数组?但是当

这是头文件

// Specification file for the NuberArrayClass
//a.k.a NumberArrayClass.h file

#ifndef NUMBERARRAYCLASS_H
#define NUMBERARRAYCLASS_H

using namespace std;
// class declaration

class NumberArrayClass
{

private:
    int arraySize;
    double * numberArray = nullptr;

public:
    //constructor declaration
    NumberArrayClass();

    //member functions
    void readDataFromFile();
    void displayArray();

    //destructor
    ~NumberArrayClass()
    {
        delete[] numberArray;
    } // end of destructor


};
#endif // NUMBERARRAYCLASS_H
下面是类函数文件

//NumberArrayClass.cpp file

#include "NumberArrayClass.h" //needed to access arry
#include <iostream>
#include <fstream> //needed for file read

using namespace std;





NumberArrayClass::NumberArrayClass()
{
    arraySize = 250;  
    numberArray = new double[arraySize];
}



void NumberArrayClass::readDataFromFile()
{

    //creating a read object and opening file.
   ifstream inFile;

   inFile.open("DoubleData.txt");

   int countIt = 0; //this is a counter

   if (!inFile.fail())
   {
        cout << "File open!" << endl;
        //this should populate the
       while (countIt < arraySize && inFile >> numberArray[countIt]);
       {
            countIt++; //incramenting counter. 
       }
    }
    else
    {
        cout << "File Read fail!" << endl;
    }//end of if/else statement.



 }//end of readDataFromFile


void NumberArrayClass::displayArray()
{

    for (int i = 0; i < arraySize; i++)
    {
       cout << numberArray[i] << endl;
   }

 }//end of displayArray
//numberrayClass.cpp文件
#包括访问arry所需的“numberrayClass.h”//
#包括
#包括//文件读取所需
使用名称空间std;
NumberRayClass::NumberRayClass()
{
阵列化=250;
numberArray=新的双精度[arraySize];
}
void numberrayclass::readDataFromFile()
{
//创建读取对象并打开文件。
河流充填;
infle.open(“DoubleData.txt”);
int countIt=0;//这是一个计数器
如果(!infle.fail())
{
cout numberArray[countIt]);
{
countIt++;//参数化计数器。
}
}
其他的
{
我看这里有个问题。
假设浮点/双精度浮点数小于
arraySize
。这意味着while循环将在
countIt
达到
arraySize
之前终止。 但是,显示函数在整个
arraySize
数组元素中循环。 由于数组在分配后没有初始化,这意味着这些元素包含垃圾

我的建议如下:

  • 分配后初始化数组
  • 仅显示read函数读取的多个元素
  • 选中此行:

    while (... && inFile >> numberArray[countIt]);
    
    numberArray = new double[arraySize];
    
    操作符>>
    不会返回操作成功的消息(因此您可以链接调用):

    拆分条件和分配,分配后检查是否到达文件末尾。您可能还需要查看
    badbit
    failbit

    关于标题问题>代码>是否有限制通过C++中的类函数访问动态分配的数组?<代码>:有一个实际限制,由你的SO和硬件来指定,但是如果这不是这里发生的事情。如果你遇到这样的问题,它将在这一行:

    while (... && inFile >> numberArray[countIt]);
    
    numberArray = new double[arraySize];
    

    (请注意,如果您决定从此类派生,则析构函数应该是
    virtual

    检查:
    但是当.code>#2正确时,您应该只显示您知道有效的数据。但是我建议不要显示#1,因为它是不必要的,如果您不打算触摸未初始化的值,那么在数组中保留这些值没有什么错(也就是说,执行#2!)。这是正确的,看看我遇到的问题是如何读取而不是数组。需要弄清楚如何从由“\n”分隔的浮点列表中读取。它们由空格分隔,但我的生成只将最后一个浮点加载到数组的第一个元素中。我通过为数组。我得到列表中的最后一个浮点数和一堆零。谢谢你的输入!