私はコンパイラを作成しており、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])
すべてのメソッド名を順番に取得します。
私はここで何を間違えましたか?