[英]c++17 error message: “reference to non-static member function must be called” when using a macro on a vector
我正在學習 c++ 並且正在玩宏。 我嘗試將 push_back 定義為 pub,它給了我這個錯誤:
error: reference to non-static member function must be called
vect.pub(1);
這是我的代碼:
#include <vector>
using namespace std;
typedef vector<int> vi;
#define pub push_back;
int main(){
vi vect;
vect.pub(1);
}
當我不使用#define
並且只寫push_back
時,沒有錯誤消息。
當我使用宏時到底發生了什么變化?
你不應該放';' 為宏。
#include <vector>
using namespace std;
typedef vector<int> vi;
#define pub push_back
int main(){
vi vect;
vect.pub(1);
}
#define pub push_back;
//...
vect.pub(1);
這擴展為以下內容,由於額外的;
這是無效的語法 .
vect.push_back;(1);
所以放棄;
和#define pub push_back
。
我正在學習 c++ 並且正在玩宏。
停止。 push_back
最多 6 次額外擊鍵。 代碼是供人類閱讀的。 您在文檔中找不到pub
,但可以找到push_back
。
同樣using namespace std;
是一個可怕的習慣。 有很多您沒有意識到您剛剛導入到全局命名空間的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.