Классы C ++ - как ссылаться на функцию-член из другой функции-члена - PullRequest
0 голосов
/ 08 апреля 2011

Я очень плохо знаком с классами c ++, так что это, вероятно, действительно очевидный вопрос, но, поскольку я еще не знаком с языком, я не могу найти правильный поисковый термин.

В любом случае, я пытаюсь создать публичную функцию в классе, получить доступ к закрытой функции в том же классе.

например

//.h file:

class foo {

float useful(float, float);

public:

int bar(float);

};

//.cpp file:

int foo::useful(float a, float b){
//does something and returns an int
}

int foo::bar(float a){
//how do I access the 'useful' function in foo?? eg something like
return useful(a, 0.8); //but this doesnt compile
}

Ответы [ 3 ]

2 голосов
/ 08 апреля 2011

Функция useful объявлена ​​как возвращающая float, но вы определяете ее как возвращающую int.

Контрастность

float useful(float, float);

против

int foo::useful(float a, float b){
    //does something and returns an int
}

Если вы измените объявление на int useful(float, float) и вернете что-то из функции, оно будет работать нормально.

1 голос
/ 08 апреля 2011

Ваши типы возврата не совпадают:

//.h file:

class foo {

float useful(float, float);      // <--- THIS ONE IS FLOAT ....

public:

int bar(float);

};

//.cpp file:

int foo::useful(float a, float b){       // <-- ...THIS ONE IS INT. WHICH ONE?
//does something and returns an int
}

int foo::bar(float a){
//how do I access the 'useful' function in foo?? eg something like
return useful(a, 0.8); //but this doesnt compile
}

Компилятор ищет определение функции, которое точно соответствует. Ошибка компилятора, которую вы получаете, вероятно, жалуется на то, что она а) не может найти float useful() или б) не знает, что вы имеете в виду, когда говорите о int useful.

Убедитесь, что они совпадают, и вызов useful в пределах bar должен работать просто отлично.

0 голосов
/ 08 апреля 2011

Поскольку вы не опубликовали сообщение об ошибке, которое дает вам ваш компилятор, я сделаю предположение.Типы возврата useful() не совпадают в файлах .h и .cpp.Если вы сделаете их совпадающими (оба int или оба с плавающей точкой), все должно работать так, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...