(C ++)将对象向量传递给构造函数

时间:2019-03-16 16:50:31

标签: c++ object vector constructor

class A {
public:
   int value;
   A(int value){
       this->value = value;
   }
};

class Relation{
    vector<A> items;

    Relation(vector<A> items){
       this->items = items;
    }
}

int main(){
   vector<A> items;
   items.push_back(A(1));

   Relation r1(items);
}

如何将新对象的向量传递给另一个对象的构造函数?在第13行中,出现错误“没有匹配的函数来调用'A :: A()'“

3 个答案:

答案 0 :(得分:1)

赞:

router.get('/', async (req, res, next) => {
  // get all staff sorted by name
  const allStaff = await Staff.find().sort('name');
  if (!allStaff) {
    res.status(404).send('No staff');
  } else {
    return res.status(200).send(allStaff);
  }
  next(ex);
});

进行了一些更改,以符合常规的C ++惯例。最重要的可能是#include <vector> class A { public: int value; A(const int value1 = 0) : value(value1) {} }; class Relation { std::vector<A> items; public: Relation(std::vector<A> items1) : items(items1) {}; } }; int main() { std::vector<A> items; items.push_back(A(1)); Relation r1(items); } 的构造函数已公开供Relation使用。

答案 1 :(得分:0)

我想发生这种情况是因为到目前为止,Relation类中的元素是私有的,请尝试在任何声明之前添加public:。并在类声明后以及分机主函数中使用分号(;)。

答案 2 :(得分:0)

关系的构造函数必须是公共的。另外,不需要所有的“ this->”。它的结束是这样的:

class A {
public:
   int value;

   A(int value)
   {
       value = value;
   }
};

class Relation{
    vector<A> items;

public:
    Relation(const vector<A>& values)
    {
       items = values;
    }
};

int main(){
   vector<A> items;
   items.push_back(A(1));

   Relation r1(items);
}