c++17 错误消息:"reference to non-static member function must be called" 在向量上使用宏时
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
。
I'm learning c++ and was playing around with macros.
Stop. push_back
最多6次额外击键。代码是供人类阅读的。您在文档中找不到 pub
,但可以找到 push_back
.
同样,using namespace std;
也是一个糟糕的习惯。有 负载 的名称您没有意识到您刚刚导入到那里的全局名称空间中。
我正在学习 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
。
I'm learning c++ and was playing around with macros.
Stop. push_back
最多6次额外击键。代码是供人类阅读的。您在文档中找不到 pub
,但可以找到 push_back
.
同样,using namespace std;
也是一个糟糕的习惯。有 负载 的名称您没有意识到您刚刚导入到那里的全局名称空间中。