現在、C++について勉強しています。
そこで自作のクラスに対しshapred_ptrを使用したところ、コンストラクターのエラーが出ました。
実行環境はclang++,-std=c++17でコンパイルを行っています。
クラスHogeのshared_ptrであるhogesを作成し、そこに他のshared_ptrである_hogesを追加するプログラムを作成しようとしています。
よろしくお願いします。
C++
1#include <iostream> 2#include <vector> 3 4class Hoge{ 5public: 6 Hoge(){}; 7 ~Hoge(){}; 8}; 9 10class Aggrecate{ 11public: 12 std::vector<std::shared_ptr<Hoge>> hoges; 13 Aggrecate(){}; 14 Aggrecate(const std::shared_ptr<Hoge> _hoges) : hoges(_hoges){}; 15 16 void add(const std::shared_ptr<Hoge>& s) { 17 hoges.push_back(s); 18 } 19}; 20 21 22int main() { 23 24 return 0; 25} 26
C++
1//エラー内容 2error: no matching constructor for initialization of 'std::vector<std::shared_ptr<int> >' 3 Aggrecate(const std::shared_ptr<int> & _nums) : nums(_nums){};
エラーとソースが食い違っているようですが…
回答1件
あなたの回答
tips
プレビュー