簡體   English   中英

傳遞矢量 <vector<int> &gt;爭論

[英]Passing a vector<vector<int> > to an argument

我是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");
}

錯誤非常籠統:期望表達式

您可能已經刪除了錯誤消息的一些重要部分,或者您的編譯器異常無法通信。

初始化列表的處理有時仍然是-erm-次優。 請嘗試以下方法:

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");

嘗試在構造函數中將參數m定義為const,例如:

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

這將允許您傳遞R值(即{{2,3}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM