, вероятно, есть несколько способов, которыми я могу разоблачить свое невежество этим вопросом:)
Во-первых, я думаю, что это код C ++, но расширение файла - .C (так, может быть, это C?)
В любом случае, я пытаюсь скомпилировать программу под названием Sundance (Sentence UNDerstanding ANd Concept Extraction), которая является инструментом обработки естественного языка. Ошибка компиляции, которую я получаю, относится к следующему:
// This class is used internally to keep track of constituents that are
// potential subjects for clauses during clause handling.
class PotentialXP {
public:
Constituent* XPPtr;
unsigned int Distance;
unsigned int ClauseIndex;
unsigned int ConstIndex;
PotentialXP() {
XPPtr = 0;
Distance = 0;
ClauseIndex = 0;
ConstIndex = 0;
};
operator int() const {
return (int)XPPtr;
};
void Set(Constituent* w,
unsigned int x,
unsigned int y,
unsigned int z){
XPPtr = w;
Distance = x;
ClauseIndex = y;
ConstIndex = z;
};
};
Ошибка "приведена из" Constituent * const * "к" int "теряет точность"
и относится к строкам:
operator int() const {
return (int)XPPtr;
};
Я понимаю, почему я получаю ошибку. XPPtr имеет тип Constituent *, так как его можно преобразовать в целое число? Может кто-нибудь выяснить, что автор кода хочет сделать здесь, и как я могу переписать эту строку, чтобы она компилировалась? Для чего нужна операторская функция (если вы ее так называете)?
Любой совет высоко ценится!