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

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

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

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

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

Q&A

解決済

1回答

2967閲覧

クラスメンバのvectorを参照で返す関数を作りたい

takemontan

総合スコア6

g++

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

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

0グッド

0クリップ

投稿2019/11/08 09:35

実現したいこと

メンバにvectorを持って,その参照を返す関数を使ってそれを操作しようとしていますが,コンパイルエラーが出てしまいます.
これを実現するにはどうしたらいいのかご教示ください.あるいは,このような参照の使い方はできないのでしょうか?

ソースコード

MyClass.hpp
※原因を特定しようとしたため実装までヘッダに記述しています

C++

1#include <vector> 2using std::vector; 3 4class Myclass 5{ 6private: 7 vector<int> vec; 8 9public: 10 Myclass() : vec() 11 { 12 13 } 14 15 vector<int>& get_vec_ref() 16 { 17 return vec; 18 } 19 20};

main.cpp

C++

1#include <iostream> 2using std::cout; 3using std::endl; 4 5#include <vector> 6using std::vector; 7 8#include "Myclass.hpp" 9 10int main() 11{ 12 Myclass obj; 13 14 for(int i = 0; i < 10; i++) 15 { 16 obj.get_vec_ref.push_back(i + 1); 17 } 18 19 for(int i = 0; i < 10 ; i++) 20 { 21 cout << obj.get_vec_ref[i] << endl; 22 } 23}

###エラーメッセージ
main.cpp: In function 'int main()':
main.cpp:16:3: error: 'obj.Myclass::get_vec_ref' does not have class type
obj.get_vec_ref.push_back(i + 1);
^~~
main.cpp:21:28: error: invalid types '<unresolved overloaded function type>[int]' for array subscript
cout << obj.get_vec_ref[i] << endl;

###環境
g++ 6.3.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

obj.get_vec_ref.xxxではなくobj.get_vec_ref().xxxでは?
同様に obj.get_vec_ref[i]obj.get_vec_ref()[i] ですね。

投稿2019/11/08 09:41

編集2019/11/08 09:45
LouiS0616

総合スコア35660

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

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

takemontan

2019/11/08 09:49

想定通り動作しました,ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問