@Durilka96

Почему V::set() не является членом «V»? В чем ошибка?

Не могу найти ошибку, можете подсказать где?
// Выполнил   Вариант №21
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>

class V {
	float y;

public:
	V();
	V(const V &);

	V(float yn) {
		y = yn;
	}

	float inc() {
		return++y;
	}
	friend void inc(V&);
	friend int cmpL(V, V);
	void set(int);
	V div(V, V);
};

V::V(const V &p) {
	y = p.y;
}

V V::div(V p1, V p2) {
	V rez(0);
	if (p2.y != 0) {
		rez.set(p1.y / p2.y);
	}
	return rez;
}

void inc(V& p) {
	printf("%i\n", p.y);
}

int cmpL(V p1, V p2) {
	if (p1.y < p2.y) {
		return p1.y;
	}
	else {
		return p2.y;
	}
}

void V::set() {
	y = z;
}

void main() {
	system("chcp 1251");
	printf("Программу выполнил  Вариант №21\n");
	V *p1, *p2;
	p1 = new V(13);
	p2 = new V(22);
	V p3(20);
	inc(*p1);
	p2->set(16);
	inc(*p2);
	p3 = p3.div(*p1, *p2);
	inc(p3);
	printf("%i\n", cmpL(*p1, *p2));
	system("pause");

}

Должны выполняться задания:
1. Определите конструктор класса.
2. Определите конструктор копии класса, используя внешний способ его определения.
3. Сделайте компонентную функцию inc дружественной.
4. Определите два указателя (p1 и p2) на объекты класса и выполните их инициализацию.
5. Выведите на экран значения компонента y объекта p1 с использованием
дружественной функции.
6. Определите компонентную функцию set, позволяющую изменить значение
компонента y.
7. Напишите оператор вызова функции set для объекта p2.
8. Напишите компонентную функцию div (используя внешний способ определения), которая делит значения компонентов y объектов p1 и p2, и
возвращает полученный результат. Выведите результат на экран.
9. Напишите дружественную функцию cmpL, которая сравнивает на меньше
значения компонентов y объектов p1 и p2, и возвращает полученный результат. Выведите результат на экран.
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galaxy
У вас set() объявлен так void set(int);, реализован так void V::set() {, а вызывается вот так rez.set(p1.y / p2.y); (т.е. set(double)).
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В чем ошибка?

В том, что в классе объявлено void set(int) а определяется -- void V::set(). Объявление должно соответствовать определению.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы