我正在编写一个编译器并使用 deque 来存储类的方法标签,这是示例代码:
#include <deque>
#include <iostream>
#include <string>
using std::cout;
using std::deque;
using std::endl;
using std::string;
int main()
{
deque<const char *> names;
string prefix = "___";
const char *classname = "Point";
const char *methodname[] = {"Init", "PrintBoth", "PrintSelf", "equals"};
for (int i = 0; i < 4; i++)
{
string label = prefix + classname + "." + methodname[i];
names.push_back(label.c_str());
}
for (int i = 0; i < 4; i++)
cout << names[i] << endl;
return 0;
}
然而,结果并不是我所期望的:
___Point
___Point.PrintSelf
___Point.PrintSelf
___Point.equals
另外,我注意到如果我只是简单地推回方法名
names.push_back(methodname[i])
我按顺序获取所有方法名。
我在这里做错了什么?