C ++ долго внутри заблуждение - PullRequest
0 голосов
/ 06 марта 2020

Хорошо, ребята, я довольно новичок в C ++, и я немного запутался в том, что здесь происходит, поэтому я даже не уверен, является ли мой заголовок точным описанием моей проблемы, но здесь ничего не говорится.

SO У меня есть файл заголовка, в котором есть две длинные переменные.

long num, denom;

Затем в моем файле. cc у меня есть конструктор, который требует две длинные переменные для установки этих переменных и две целые для их установки переменные. Конструктор int находится ниже.

Ratio::Ratio(int numerator, int denominator){
num =  long(numerator);
denom =  long(denominator);
this->normalize();}

Я предполагаю, что мне нужно преобразовать свои параметры в long, чтобы сохранить их в длинных переменных, которые я объявил в своем заголовочном файле.

При попытке компилирования я получаю ошибка: `ошибка: не найдено ни одного объявления 'long int Ratio :: figurerator ()' 30 | long Ratio :: figurerator () {return num;}

Моя текущая функция нумератора - просто простой метод получения

long Ratio::numerator(){return num;}

Я предполагаю, что когда я приводил их к long в конструкторе, это создает длинный int. Затем компилятор ищет функцию числителя, которая принимает длинные int-параметры вместо long (как та, что я уже сделал), но не находит ее. Любая идея, как это исправить, не создавая функцию числителя, которая занимает много времени? У меня должен быть конструктор, который принимает целые числа и я могу хранить их в моих длинных переменных num и denom. Любая помощь приветствуется! Спасибо `

1 Ответ

0 голосов
/ 06 марта 2020

Эти значения должны быть в состоянии преобразовать неявно, потому что int меньше, чем long, поэтому он всегда хорошо определен. Вы должны предоставить содержимое файла заголовка, потому что ошибки, где объявляются переменные, как правило, являются источником этих предупреждений компилятора.

...