簡體   English   中英

c++17 錯誤消息:在向量上使用宏時“必須調用非靜態成員 function 的引用”

[英]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.

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