2017-03-21 13 views
-4

として使用することはできません。これは私の完全なコードです:これは私の誤りである「make_pairが」関数

#include <iostream> 
#include <vector> 
#include <bits/stdc++.h> 

using namespace std; 
#define ff first 
#define mp make_pair 

#define ss second 


int main(void) { 

    int m; 
    vector <string> grid; 

    cin >> m; 

    pair <int,int> foo; 
pair <int,int> bar; 


// bar =make_pair (10.5,'A'); 
foo = make_pair (1,2); 
cout<<foo.ss<<endl; 
    for(int i=0; i<m; i++) { 
     string s; cin >> s; 
     grid.push_back(s); 
     int pp = s.find('p'); 
     int mp = s.find('m'); 
     if(pp>=0){ 
      bar = make_pair(pp,i); 
     } 
     cout<<pp<<endl; 
    } 
    return 0; 
} 

:私はforループの内側に配置されたときに

prog.cpp: In function 'int main()': 
prog.cpp:40:32: error: 'make_pair' cannot be used as a function 
      bar = make_pair(pp,i); 
           ^

make_pairは、このエラーを与えます、私はそれを配置する場合、それは完全に正常に動作します。どこが間違っていますか?

編集:私はcodechef IDEでamtrying ...これらは入力

3 
--- 
-m- 
p-- 
+0

これは尋ねられませんでしたか?あなたはちょうどあなたの質問を編集して再オープンすることができました。 –

+0

[再現できません](http://ideone.com/9DkTbA) –

+1

@KerrekSBもう一度確認できますか? – MrRobot9

答えて

8
#define mp make_pair 
... 
    int mp = s.find('m'); 
... 
     bar = make_pair(pp,i); 

ているあなたは、関数を隠して、変数としてmake_pairを宣言しました。

これを修正するには、恐ろしいマクロ定義を取り除いてください。

+1

ええ、それはforループの外に置かれたときに出力を出していたので、私は混乱しました。 – MrRobot9

+1

@ MrRobot9それは "外側のforループ"ではなく、 "変数の範囲外"です。例えば、ループの中ではあるが変数定義の前にも、それはうまくいくだろう。 – hvd

関連する問題