質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

644閲覧

Vector で 設定したクラスのメソッドを使用する方法を伺ってよろしいでしょうか?

ma2hiro

総合スコア157

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2022/08/23 08:05

前提

C++を思い出すために色々想定問題を解いています。(解説がない)

それでVector で 設定したクラス を以下のように

vCustomer[i].setAge(age);

のようにしようとするとエラーになります。
どうすればクラスのメソッドが使えるのかお伺いしてよろしいでしょうか?
以下ソースを貼り付けます。

#include <iostream> #include <string> #include <vector> using namespace std; /* order注文クラス */ class orderCustomer { public: int iTotalPrice; int iCustomerNo; int iAge; void setAge(int age) { iAge = age; } private: }; int main() { //// データ初期設定 ココから int iPeopleNum, iOrderNum;//人数とオーダー数 cout << "ninnzuu to order suu nyuuryoku" << endl; cin >> iPeopleNum >> iOrderNum;//を読み込む //宣言 std::vector<orderCustomer> vCustomer[1000]; cout << "age input" << endl; int age; for (int i = 0; i < iPeopleNum; i++) { cin >> age; vCustomer[i].setAge(age); } }

ご助力頂けますと嬉しく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

std::vector<orderCustomer> vCustomer[1000];

要素数1000のvector(を1個)じゃなくて
(要素数0の)vectorを1000個作っています。

投稿2022/08/23 08:22

編集2022/08/23 08:31
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2022/08/23 08:57

episteme様 コメントありがとうございます。 どのような語句でググると 要素数1000のvector(を1個)作成出来るか伺ってよろしいでしょうか? 今通勤電車内なので帰宅後ググろうかと思っております
episteme

2022/08/23 12:06

> 伺ってよろしいでしょうか? かまいませんよ。
ma2hiro

2022/08/23 13:00

episteme様 要素数1000のvector(を1個)作成するにはどのように宣言して実装すれば良いのか なんとググれば良いでしょうか? >std::vector<orderCustomer> vCustomer[1000]; ではないとのことなので ``` //宣言 // std::vector<orderCustomer> vCustomer[1000]; std::vector<orderCustomer[1000]> vCustomer; cout << "age input" << endl; int age; for (int i = 0; i < iPeopleNum; i++) { cin >> age; vCustomer[i]->setAge(age); } ``` としてみたのですがコンパイルは通るのですが実行するとメモリエラーっぽいのです…… なんとググれば良いのかアドバイスを頂けますようお願い申し上げます。
kazuma-s

2022/08/23 15:35

「C++ vector 初期化」でクグってみたらどうでしょうか? レファレンスマニュアルだと Allocator とかの余計な引数があって初心者は混乱するかもしれないので、vector の初歩的な使い方の説明があるものをよく読んでみてください。
ma2hiro

2022/08/23 23:55

皆様コメントありがとうございます。 ググって調べていましたが正直な所 もう少しヒントが欲しかったです…… 勉強不足で申し訳ございません。もっと邁進していきます。 以上ご連絡いたします。
episteme

2022/08/24 00:05 編集

> 正直な所もう少しヒントが欲しかったです…… なにがわからんかったですか? 解決しましたか?
ma2hiro

2022/08/24 01:36

解決しました。 episteme様の >https://cpprefjp.github.io/reference/vector/vector/op_constructor.html >コレ↑の (3) ではURL内の(3)で explicit vector(size_type n); // (3) C++11 explicit vector(size_type n, const Allocator& a = Allocator()); // (3) C++14 かな?と思い そちらからでは分からなかったです…… コメントありがとうございました。
episteme

2022/08/24 03:36

> (3) C++11 : n 個の T() で初期化された要素を保持した vector オブジェクトを構築する。 と説明されています。なにがわからんですか?
ma2hiro

2022/08/24 03:47

episteme様 ご指摘で今やっと分かりました。 explicit vector(size_type n); // (3) C++11 が (3) C++11 : n 個の T() で初期化された要素を保持した vector オブジェクトを構築する。 という事に…… 理解が浅くてお手数おかけして申し訳ございませんでした。 本当にありがとうございました。
guest

0

std::vector<orderCustomer> vCustomer(1000); で要素数1000の vector を 1個用意できます。
でも、なぜ 1000個必要なのですか?
std::vector<orderCustomer> vCustomer(iPeopleNum); で十分なのでは?

投稿2022/08/23 15:40

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2022/08/23 23:17

Kazuma-s様 コメントありがとうございます。 中括弧{}かなと思っていたのですが()ですね…… iPeopleNumで十分なのですが まず動作させようと決め打ちで1000でやってみようとしておりました。 コメントありがとうございました。
episteme

2022/08/24 00:04

> 中括弧{}かなと思っていたのですが()ですね…… どっちでもOKなはずよ。
episteme

2022/08/24 03:39

> なんとググれば良いでしょうか? とか訊いておきながら、"そのものヅバリな回答"にベストアンサーなのねwww
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問