実現したいこと
メンバに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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/08 09:49