Devrains
@Devrains

Вызов функции из класса?

Хочу вызвать фунцию getValues из класса Properties. К сожалению не могу понять происходящую ошибку... Кто знает, напишите любой вариант. Плизз)
Так же буду раз исправления кода.
#include <iostream>

class Properties
{
public:
	int a = 13;
	int b = 82;
	float c = 27.01f;
	void getValues(Properties* objectValues);
};

void Properties::getValues(Properties* objectValues) // именно эту...
{
	std::cout << objectValues->a << std::endl;
}

int main()
{
	setlocale(0, "");
	Properties* objectValues;
	objectValues->getValues(); // неужели так нельзя?
	std::cin.get();
	return 0;
}
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
У вас ошибка в вызове метода getValues, так как ожидается аргумент: void getValues(Properties* objectValues);.

Создайте объект и передавайте ссылку на него.
Properties obj;
Properties* objectValues = new Properties;
objectValues->getValues(&obj);

UPD: Если вам не нужно косвенное обращение к объекту через указатель, но хотите обратиться к члену объекта через указатель, то можно так:
#include <iostream>

class Properties
{
public:
  void getValues();

	int a = 13;
	int b = 82;
	float c = 27.01f;
};

void Properties::getValues()
{
	std::cout << a << std::endl;
}

int main()
{
	setlocale(0, "");
  
	Properties* ptr = new Properties;
	ptr->getValues();
  
	std::cin.get();
  
	return 0;
}

Можно также и без указателя обращаться к члену объекта, через точечную нотацию:
#include <iostream>

class Properties
{
public:
  void getValues();

	int a = 13;
	int b = 82;
	float c = 27.01f;
};

void Properties::getValues()
{
	std::cout << a << std::endl;
}

int main()
{
	setlocale(0, "");
  
	Properties obj;
	obj.getValues();
  
	std::cin.get();
  
	return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
По-моему, у тебя ошибка в сигнатуре метода. Передавать туда указатель не надо, надо брать данные из this.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Sabris Москва
от 40 000 до 50 000 ₽
AVD Москва
от 120 000 до 150 000 ₽
Diamond Personnel R&C Санкт-Петербург
от 270 000 до 300 000 ₽