2016-04-17 18 views
0

I []は各part_rect構造体のための(part_num、part_nameを指定、part_quantity、part_cost)Robot_partsと呼ばれる構造体のアレイを使用する必要が構造アレイおよびポインタ

ボイド表示機能を介して、私はRobot_parts []配列を表示する必要が私はRobot_parts []をどこで宣言すればいいのか分かりませんし、括弧内に数値を入れる必要があるのか​​どうかわかりません。

これまでのところ、私が持っている:

#include <iostream> 
#include <string> 

using namespace std; 
void display(); 

struct part_rec 
{ 
    int part_num; 
    string part_name; 
    int part_quantity; 
    double part_cost; 
}; 

int main() 
{ 
    part_rec Robot_parts[ ] = { 
           {7789, "QTI", 4, 12.95}, 
           {1654, "bolt", 4, 0.34}, 
           {6931, "nut", 4, 0.25} 
                }; 
return 0; 
} 

void display() 
{ 
    cout<<Robot_parts[]<<endl<<endl; 
} 

私はまた、いくつかの他の誤りを犯した場合、私に知らせてください。ありがとう!

+0

'COUT << Robot_parts [] << endl << endl; '期待通りに動作しませんが、C++には配列を直接印刷する機能がありません。 –

+0

これがうまくいかなければならないと思いますか? 'cout << Robot_parts [] << endl << endl;' ??そしてあなたは 'main()' BTWから 'display()'を呼んでいません。 –

+0

なぜ、C++コンテナを使用しないのですか? Cスタイルの配列の代わりに 'vector'を使用しますか? – 4386427

答えて

0

コメントに記載されているように、std::vectorまたはstd::arrayのようなC++コンテナを使用する方がはるかに良いでしょう。

しかし、あなたの教授は、古いスタイルの配列を必要とするので、あなたは以下のコードのように試みることができる - の説明のためのコメントを参照してください:

#include <iostream> 
#include <string> 
#include <vector> 

using namespace std; 
struct part_rec 
{ 
    int part_num; 
    string part_name; 
    int part_quantity; 
    double part_cost; 
}; 

// You have to pass a pointer (to the array) and the size of the array 
// to the display function 
void display(part_rec* Robot_parts, int n); 


// Make a function so that you can "cout" your class directly using << 
// Note: Thanks to @BaumMitAugen who provided this comment and link: 
//  It makes use of the so called Operator Overloading - see: 
//  https://stackoverflow.com/questions/4421706/operator-overloading 
//  The link is also below the code section 
std::ostream &operator<<(std::ostream &os, part_rec const &m) 
{ 
    // Note - Only two members printed here - just add the rest your self 
    return os << m.part_num << " " << m.part_name; 
} 


int main() 
{ 
    part_rec Robot_parts[] { 
           {7789, "QTI", 4, 12.95}, 
           {1654, "bolt", 4, 0.34}, 
           {6931, "nut", 4, 0.25} 
          }; 
    display(Robot_parts, 3); 
    return 0; 
} 

void display(part_rec* Robot_parts, int n) 
{ 
    // Loop over all instances of your class in the array 
    for (int i = 0; i < n; ++i) 
    { 
     // Print your class 
     cout << Robot_parts[i] << endl; 
    } 
} 

@BaumMitAugenによって推奨リンク: Operator overloading

+1

この回答を読んで初心者のために:それはいわゆる[オペレータのオーバーロード](https://stackoverflow.com/questions/4421706/operator-overloading)(推奨読んで)を利用しています。 –

+0

ありがとうございます! :) –