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

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

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

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

Q&A

解決済

1回答

359閲覧

vectorをクラスで使いたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

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

0グッド

0クリップ

投稿2017/10/11 06:29

vectorをクラスで使いたいです。
自分で一から作成してみたものと、サイトを参考にしたものがあるのですがうまく実行できません。
ご教示お願いします。

参考サイトhttp://tercel-tech.hatenablog.com/entry/2012/11/03/003302

C++

1#include<stdio.h> 2#include<vector> 3#include<iostream> 4using namespace std; 5 6class A{ 7public: 8 // デフォルトコンストラクタ 9 A() { 10 mX = new int(); 11 } 12 13 // コピーコンストラクタ 14 explicit A(const A &a) { 15 mX = new int(*a.mX); 16 } 17 18 // デストラクタ 19 virtual ~A() { 20 delete mX; 21 } 22 23 // 代入演算子のオーバーロード 24 A &operator=(const A &a) { 25 if (this != &a) { 26 *mX = *a.mX; 27 } 28 return *this; 29 } 30 31 int *mX; 32}; 33vector< A* > gA; 34 35void add() { 36 A a; 37 gA.push_back(&a); 38} 39int main() { 40 41 add(); 42 *(gA[0]->mX) = 6; 43 44 cout << gA[0]->mX << endl; 45 46 return 0; 47}

以下、0からの自作

C++

1#include<stdio.h> 2#include<vector> 3#include<iostream> 4using namespace std; 5 6class A{ 7private: 8 vector<int> x; 9public: 10 A(); 11 A(int& val) { x.push_back(val); } 12 13 void X(int& a) { rerturn x[a]; } 14}; 15int main() { 16 int b = 1432; 17 A a(b); 18 19 int c = 0; 20 cout << a.X(c); 21 return 0; 22}

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

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

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

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

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

LouiS0616

2017/10/11 06:36

std::vectorをそのまま使わないのはどうしてでしょうか?
退会済みユーザー

退会済みユーザー

2017/10/11 06:50

こんにちは、回答ありがとうございまあす。  vectorで値の操作をしてみたいと思ったのですが全く表示などができず困っている次第です。
yohhoy

2017/10/11 09:54 編集

「vectorをクラスで使う」の意図が不明瞭ですが、引用されているコードと、あなた自身が書いたコードは同じ目的を持った処理なのでしょうか?「vector<A>」と「Aがvector<int>をメンバとして持つ」は全く意味が異なります。一度、C++入門書などで学習されることをお勧めします。
退会済みユーザー

退会済みユーザー

2017/10/12 05:14

こんにちは、回答ありがとうございます。vector<A>のコードはほかのサイトのものなので全然わからないです。参考書、考慮します。
guest

回答1

0

ベストアンサー

関数Xが、
・戻り値がvoidなのにreturnしようしている
・returnのスペルが違う

c++

1void X(int& a) { rerturn x[a]; } 23int X(int& a) { return x[a]; }

投稿2017/10/11 06:41

ttyp03

総合スコア16996

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

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

退会済みユーザー

退会済みユーザー

2017/10/11 06:46

回答ありがとうございます。 ”return”ほんとですね! 変更後はこうなったのですが、いかがでしょうか? "int X(int& a) { cout<<x[a]<<endl; }"
ttyp03

2017/10/11 06:48

ん? いや、X内で出力するなら戻り値はvoidのままでいいんじゃないですか?
ttyp03

2017/10/11 06:50

クラスAおよび関数Xの役割を良く考えましょう。 出力するところまで含むのか、あくまでもデータ管理に留めるのか。
退会済みユーザー

退会済みユーザー

2017/10/11 06:53

とりあえずこのクラスで出力もしたいのですが voidに変更したところやはり表示されません。
ttyp03

2017/10/11 06:55

mainの方は修正してますよね? cout << a.X(c); ↓ a.X(c);
退会済みユーザー

退会済みユーザー

2017/10/11 06:58

変更してもやはり表示ません。
退会済みユーザー

退会済みユーザー

2017/10/11 07:01

さきほどのreturnについても エラーがでなかったのでもう一度 開きなおして試してみます。
退会済みユーザー

退会済みユーザー

2017/10/11 07:06

ありがとうございます。 エディター再起動したら実行でき表示されました! おそらく最近あまりわからずにgitを入れて使っているのでそれ が影響したんだと思います。
yumetodo

2017/10/11 17:43

(git関係ないのではという思い)
退会済みユーザー

退会済みユーザー

2017/10/12 05:17

こんにちは 新規作成のときに保存の参照先をかえたのでたぶんそれでは と思い直しています。
ttyp03

2017/10/12 05:21

いずれにしても、解決したのであれば閉じてくださいね。
退会済みユーザー

退会済みユーザー

2017/10/12 08:35

了解いたしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問