Я искал в Интернете решения для этой компиляционной ошибки. Большинство из них, по-видимому, связаны с двумя вариантами:Запрос участника [...] в [...], который относится к классу non-class [...]
- Обработка указателя как объекта, а не разыменование его.
- Ошибка в переменной с функцией, возвращающей тип переменной и пытающейся получить к ней доступ.
Мой код:
#ifndef ESCRITOR_PROLOG_HH
#define ESCRITOR_PROLOG_HH
#include "planning.hh"
#include <string>
#include <ostream>
class EscritorProlog {
private:
Planning planningAEscriure;
public:
EscritorProlog(Planning planning);
EscritorProlog(Planning &&planning);
void escriuFitxerProlog(std::ostream &escritor);
};
#endif
И main.cc:
#ifndef MAIN_CC
#define MAIN_CC
#include "escritorProlog.hh"
#include <iostream>
#include <fstream>
int main() {
std::ofstream escritor("./test.txt");
EscritorProlog test(Planning());
test.escriuFitxerProlog(escritor);
}
#endif
Если вы пытаетесь скомпилировать его с
g++ -c main.cc -std=c++11
Вы просто получите ошибка ...
main.cc: In function ‘int main()’:
main.cc:11:8: error: request for member ‘escriuFitxerProlog’ in ‘test’, which is of non-class type ‘EscritorProlog(Planning (*)())’
test.escriuFitxerProlog(escritor);
Теперь я не знаю, не хватает ли я чего-то, но я не вижу ни одного из двух вопросов, упомянутых ранее в моем коде. Извините, если я вопию слепо или что-то еще, но я просто не вижу ошибки.
Любая помощь будет оценена по достоинству.
Вы объявили функцию, принимающую один параметр указатель на функцию типа моего друга. Почему, по-вашему, вы можете применить оператор точки к функции? – AnArrayOfFunctions
@AnArrayOfFunctions Я думал, что просто объявляю объект LOL. C++ странно. – lkese3ker