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;
}
  • Вопрос задан
  • 141 просмотр
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы