C++ C++;头文件中的数组

C++ C++;头文件中的数组,c++,arrays,header-files,C++,Arrays,Header Files,我正在做一个训练练习,开始时遇到了困难。我必须为数组数据结构编写一个程序。提供了一个测试线束,我需要实现数据结构的代码。我不知道如何在头文件中定义数组 bellow是无法编辑的测试线束main.cpp #include <fstream> #include <iostream> using namespace std; // ***************************** // you need to create this class // ******

我正在做一个训练练习,开始时遇到了困难。我必须为数组数据结构编写一个程序。提供了一个测试线束,我需要实现数据结构的代码。我不知道如何在头文件中定义数组

bellow是无法编辑的测试线束main.cpp

#include <fstream>
#include <iostream>
using namespace std;


// *****************************
// you need to create this class
// *****************************
#include "ArrayIntStorage.h"


int main(int argc, char **argv) {
// ***********************************
// non-sort read & then sort using std
// ***********************************
ifstream fin1("ACW2_data.txt");
ofstream out1("1-arrayUnsortedRead.txt");
//ofstream out2("2-arrayUnsortedRead-thenSTDSort.txt");

if(!fin1.is_open()) 
{
    cout << "FAIL" << endl;
    return 1;
}

ArrayIntStorage arrayStorage1;
arrayStorage1.setReadSort(false);   // do not read sort

// read in int values into data structure
fin1 >> arrayStorage1;

// output int values in data structure to file
out1 << arrayStorage1;

// sort data structure using std
arrayStorage1.sortStd();

// output int values in data structure to file
out2 << arrayStorage1;

fin1.close();
out1.close();
out2.close();
#包括
#包括
使用名称空间std;
// *****************************
//您需要创建这个类
// *****************************
#包括“ArrayIntStorage.h”
int main(int argc,字符**argv){
// ***********************************
//非排序读取&然后使用std进行排序
// ***********************************
ifstream fin1(“ACW2_data.txt”);
流输出1(“1-arrayunsorterdard.txt”);
//流输出2(“2-arrayunsorterdard-thenSTDSort.txt”);
如果(!fin1.is_open())
{
cout数组存储1;
//将数据结构中的int值输出到文件

out1头文件阵列存储应如下所示:-

功能签名可能会根据用途而更改:-

// ArrayIntStorage.h - header file

class ArrayIntStorage
{

   public :

    ArrayIntStorage();  // this is the constructor
                        // You may skip this constructor, and use the default one 

    void setReadSort(bool bSort);
    void sortStd()

  // Add any public members if needed

   private :

    // Add any private members/ functions if needed

}

头文件ArrayIntStorage应如下所示:-

功能签名可能会根据用途而更改:-

// ArrayIntStorage.h - header file

class ArrayIntStorage
{

   public :

    ArrayIntStorage();  // this is the constructor
                        // You may skip this constructor, and use the default one 

    void setReadSort(bool bSort);
    void sortStd()

  // Add any public members if needed

   private :

    // Add any private members/ functions if needed

}

我很确定您应该创建ArrayIntStorage.h头并实现匹配的ArrayIntStorage.cpp

基于“//sort data structure using std”注释,您需要在适当的stl容器上使用并创建一个包装器,如std::vector

根据“//不读取排序”注释,默认情况下,您应该在每次插入后对向量进行排序(当然,除非有人在包装器上调用setReadSort(false))

除了上面描述的接口之外,您还需要实现已经实现的>>和>操作符。所有这些都是通过局部变量完成的

这就是“使用main.cpp中此变量的值”的方式。您使用该变量作为参数调用类的成员函数


最后,如果您在理解头文件和链接错误方面遇到所有这些问题,您确定您已经开始了正确的培训练习吗?

我非常确定您应该创建ArrayIntStorage.h头并实现匹配的ArrayIntStorage.cpp

基于“//sort data structure using std”注释,您需要在适当的stl容器上使用并创建一个包装器,如std::vector

根据“//不读取排序”注释,默认情况下,您应该在每次插入后对向量进行排序(当然,除非有人在包装器上调用setReadSort(false))

除了上面描述的接口之外,您还需要实现已经实现的>>和>操作符。所有这些都是通过局部变量完成的

这就是“使用main.cpp中此变量的值”的方式。您使用该变量作为参数调用类的成员函数

最后,如果您在理解头文件和链接错误方面遇到了所有这些问题,您确定您已经开始了正确的培训练习吗?

Marc

(我在评论中提到过)让我们失望了。他们并没有将头文件作为一个主题来讨论,但确实如此

基本上,头文件定义了类的“接口”。它被放在一个单独的文件中,这样类的用户就可以在代码中包含这个“接口定义”…比如
#include“ArrayIntStorage.h”
例如,这允许编译器确定他们是否有错误,比如方法名称拼写错误,或者传递了错误类型的参数……你知道,你看到的所有编译器错误……是吗

因此,您可以在.h文件中定义类的功能…然后在.cpp文件中定义类的功能

这有意义吗

干杯,基思。

马克

(我在评论中提到过)让我们失望了。他们并没有将头文件作为一个主题来讨论,但确实如此

基本上,头文件定义了类的“接口”。它被放在一个单独的文件中,这样类的用户就可以在代码中包含这个“接口定义”…比如
#include“ArrayIntStorage.h”
例如,这允许编译器确定他们是否有错误,比如方法名称拼写错误,或者传递了错误类型的参数……你知道,你看到的所有编译器错误……是吗

因此,您可以在.h文件中定义类的功能…然后在.cpp文件中定义类的功能

这有意义吗


Cheers.Keith.

这是一个不切实际的练习。应该提供
ArrayIntStorage
类的头文件和文档。我会向任何懒散、傲慢的灵魂强烈抱怨这个练习。这是一个不切实际的练习。
ArrayIntStorage
类的头文件和文档应该提供。我会大声和猛烈地向任何懒惰、傲慢的灵魂抱怨这个练习。我知道我必须创建头文件,但我没有听说任何关于创建匹配的cpp文件的事情。至于你的最后一点,我在创建>操作符的头文件时确实会出错。我试图用这行代码绕过它
std::ostream&operator.这些给了我“LNK”我的头文件中的链接器错误谢谢!我现在已经做了一些其他练习,并对其有了更多的了解。我知道我必须创建头文件,但我没有听说任何关于创建匹配的cpp文件的内容。至于你的最后一点,我在创建>运算符的头文件时确实会出错。我试图用这一行来绕开它e> std::ostream&operator。这些在我的头文件中给了我“LNK”链接器错误谢谢!我现在已经做了一些其他的练习,并且对它有了更多的了解。好的,我以前有过类似的东西,但我无法让它工作。我非常确定现在我必须使用默认构造函数,尽管有
std::ostream& operator<<(std::ostream &out, const ArrayIntStorage &a)
{ return out; }

std::ifstream & operator>>(std::ifstream &, ArrayIntStorage &)
{ return in; }
#include <fstream>
#include <iostream>