C++17 错误消息:在矢量上使用宏时"reference to non-static member function must be called"



我正在学习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时,没有错误消息。

我使用宏时到底发生了什么变化?

#define pub push_back;
//...
vect.pub(1);

这扩展到以下内容,由于额外的;,这是无效的语法。

vect.push_back;(1);

因此丢弃;#define pub push_back

你不应该放';'用于宏。

#include <vector>
using namespace std;
typedef vector<int> vi;
#define pub push_back
int main(){
vi vect;
vect.pub(1);
}

我正在学习c++,并在玩宏。

停止push_back最多为6次额外击键。代码是用来让人类阅读的。在文档中找不到pub,但可以找到push_back

类似地,using namespace std;是一个可怕的习惯。有加载的名称,您没有意识到您刚刚导入到那里的全局命名空间中。

相关内容

  • 没有找到相关文章

最新更新