#cpp #visual_cpp
При компиляции выдаётся следующая ошибка: выражение слева от .print должно представлять класс, структуру или объединение. Код: class Object { private: char* name; char* teacher; short int hours; char* exam; float mark; public: Object::Object() { Object::name = "unknown"; Object::teacher = "unknown"; Object::hours = 0; Object::exam = "unknown"; Object::mark = 0; } Object::Object(char *n) { Object::name = n; Object::teacher = "Unknown"; Object::hours = 0; Object::exam = "unknown"; Object::mark = 0; } void Object::print() { std::cout << name << std::endl; std::cout << teacher << std::endl; std::cout << hours << std::endl; std::cout << exam << std::endl; std::cout << mark << std::endl; } }; void main() { Object Program1(); Program1.print(); }
Ответы
Ответ 1
Это канонический пример most vexing parse. Вы, согласно правилам языка, объявили не экземпляр класса, а прототип функции с пустым списком аргументов, возвращающей Object. Уберите лишние скобки после Program1. Object Program1; Уточнение: чтобы не думать о случае отсутствия конструкторов, лучше писать так: Object Program1{}; (по причинам, сходным с этими), если ваша версия компилятора это позволяет.Ответ 2
Этот код вообще не соберётся... (в gcc точно) 1) Не нужно везде писать Object:: внутри класса 2) main() должна возвращать int 3) Object Program1(); переделайте в Object Program1; Вобщем вот так... #includeclass Object { private: char* name; char* teacher; short int hours; char* exam; float mark; public: Object() { name = "unknown"; teacher = "unknown"; hours = 0; exam = "unknown"; mark = 0; } Object(char *n) { name = n; teacher = "Unknown"; hours = 0; exam = "unknown"; mark = 0; } void print() { std::cout << name << std::endl; std::cout << teacher << std::endl; std::cout << hours << std::endl; std::cout << exam << std::endl; std::cout << mark << std::endl; } }; int main() { Object Program1(void); Program1.print(); return 1; } По поводу скобочек... Вы сделали не то что хотели. Хотели вызвать конструктор объекта,а у вас получилось объявление функции. Object Program1(void); п.с. Мне кажется у Вас какая-то неправильная книжка по c++...
Комментариев нет:
Отправить комментарий