传递vector <vector <int>&gt;争论

时间:2015-11-22 15:29:11

标签: c++ vector parameters

我是C ++编程的新手,有一段时间以来,我一直试图解决vector<vector<int> >的问题。

这是头文件

#ifndef ASSIGNMENT_H_
#define ASSIGNMENT_H_

#include <iostream>
#include <vector>
#include <string>

using std::string;
using std::vector;
using namespace std;

class Mood{
public:
   string lecture;
   vector<Block> blocks;

   Mood(vector<vector<int> > &m, string lecture){
     this->lecture=lecture;
     for(auto r: m){
        blocks.push_back(Block(r));
     }
  }
};
#endif

Block是另一个简单的类,只有2个int写在同一个文件中(但我认为这对我的问题并不重要)。

问题在于主要写在另一个文件中:

#include <iostream>
#include <vector>
#include <string>
#include "assignment.h"
using std::vector;
using std::string;
using namespace std;
int main(){
   Mood r= Mood({{1,2}},"Hello");
}

错误很一般:预期表达式

2 个答案:

答案 0 :(得分:1)

您已经删除了错误消息的一些重要部分,或者您的编译器异常无法通信。

初始化列表的处理有时仍然有点 - 次优 - 次优。请试试这个:

auto main() -> int {
   auto r = Mood({vector<int>{1,2}}, "Hello");
}

<强>更新

在我们发现的注释中,您使用了C ++ 11初始化语法,但未激活C ++ 11支持。要么激活C ++ 11,要么采用旧方法来初始化向量:

vector<vector<int> > m;
vector<int> m0;
m.push_back(m0);
m[0].push_back(1);
m[0].push_back(2);
Mood r = Mood(m, "Hello");

答案 1 :(得分:0)

尝试在构造函数中将参数m定义为const,例如:

Mood(const vector<vector<int> > &m, string lecture)

这将允许您传入R值(即{{2,3}}