2013-02-24 75 views
0

我有一个struct数据类型。它包含一个也是一个结构的数据成员。在结构中计数数组实例

struct List{ 
    private: 
     struct Line listLine[MAX_LINES]; 
    public: 
     void set(int no); 
     void display() const; 
}; 

listLine是线型,定义为:

struct Line { 
    private: 
     int num; 
     char itemString[MAX_CHARS + 1]; 
    public: 
     bool set(int n, const char* str); 
     void display() const; 
}; 

的main.cpp

int main() { 

    int no; 
    List list; 

    cout << "List Processor\n==============" << endl; 
    cout << "Enter number of items : "; 
    cin >> no; 

    list.set(no); 
    list.display(); 
} 

线::显示

void Line::display() const { 

    cout << this->num << ' ' << this->itemString << endl; 

} 

list.display(呼叫线.display和line.display prin TS线的一个实例,如果我把它的3倍,它将输出3种不同类型的数据,相应的每一个listLine指数)

void List::display() const { 

    for (int i = 0; i < 10; i++) { 
     this->listLine[i].display(); 
    } 

} 

比方说,我填充listLine像这样:

listLine[0].num = 1 
listLine[0].itemString = ABC 
listLine[1].num = 2 
listLine[1].itemString = ZXC 
listLine[2].num = 3 
listLine[2].itemString = QWE 

我知道上面是不正确的C++语法,我只是试图说明这个概念,显示什么数据是在listLine里面。

到目前为止,我已经能够打印listLine的内容,像这样:以上

// reading values in 
List Processor 
============== 
Enter number of items : 3 
Enter line number : 1 
Enter line string : ABC 
Accepted 
Enter line number : 2 
Enter line string : ZXC 
Accepted 
Enter line number : 3 
Enter line string : QWE 
Accepted 

// printing those values with the loop i posted 
1 ABC 
2 ZXC 
3 QWE 
1 
134514883 
-1217566436 Jm·Z·Èí¬¿- 
134515757 
134514257 
134515633 0 
-1218833660 ôZ·F· 

注意到的唯一有效数据是如何的

for (int i = 0; i < 10; i++) { 
    this->listLine[i].display(); 
} 

输出1 ABC2 ZXC3 QWE和之后它只是打印乱码?

我想只显示有效数据,但List的display()函数没有参数,所以我怎么知道listLine中哪些数据是有效的?

我只想打印有效的行,在上面的例子中是三个,其他7行是废话。

+0

是的,我会对此表示歉意,第二眼看起来相当神秘。 – eveo 2013-02-24 01:19:36

+0

为什么你不在''''struct''中存储'Line'的数量(在你删除的时候增加和减少)? (我假设'std :: list'是这个任务的界限)。 – Johnsyweb 2013-02-24 01:23:33

+0

我无法编辑结构。数据成员和成员函数在作业中概述。 – eveo 2013-02-24 01:25:41

回答

0

嗯,这个问题改变了一下。

,但我的回答原来的问题,下面,是暗示足够我认为(对于一个练习/功课问题)


明显的分配要求使用nullterminated串

中说,当您已完成这些作业,请使用std::string(或std::wstring)存储字符串

+0

会做什么,这只是OOP C++的介绍。我的主要问题是我无法从'List'结构的'line'类型的数组中访问'line'的数据成员。 – eveo 2013-02-24 01:03:08

+0

你可以在列表中添加另一个成员,在那里你可以存储在List :: set(no)中传递的数字吗?例如:当你调用List :: set(no)时,那么在它的正文中,你就不会将List存储在一个变量中。所以当你调用List :: display()时,你可以在循环时使用该变量作为你的上限 – TravellingGeek 2013-02-24 01:19:27

+0

我希望!结构由我的教授定义。 – eveo 2013-02-24 01:26:31