我有一个 ANTLR 规则,它会返回一个向量:
main returns [std::vector<int> v]
:
('ERROR' t3=INT{v.push_back(atoi((const char*)$t3.text->chars));}
'='t4=INT{v.push_back(atoi((const char*)$t4.text->chars));}
);
然后我从 C++ 调用它并尝试获取矢量数据。
但是,我的问题是 ANTLR3 自动将向量 v 初始化为 NULL,这是不允许的,并且给了我一个错误。
如果我生成 antlr 的 C++ 输出并尝试使用我的项目进行编译,则会出现错误。
我手动转到 ANTLR 输出的解析文件并将设置删除为 NULL 选项并再次编译,一切都解决了。
我可能会找到解决此问题的方法:
1)自己从ANTLR初始化向量(不知道如何初始化向量)
2)防止ANTLR初始化我的向量(不确定是否可以完成)
3)总是手动去改变初始化(不好的做法)
4)找到另一种返回向量的方法,尝试返回指向数组的指针我得到以下错误:
error: conversion from ‘std::vector<int, std::allocator<int> >*’ to non-scalar type ‘std::vector<int, std::allocator<int> >’ requested
有什么帮助吗?