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