C ++ Использование справочной функции из заголовочного файла в cpp? - PullRequest
1 голос
/ 10 января 2020

У меня есть заголовочный файл и cpp файл. В файле .h я объявил класс и функцию с возвратом ссылки:

.h file :

#include <iostream>
class testclass {
    Car &createCar(int x, int y);
}

.cpp file :

#include<testclass.h>
Car testclass:&createCar(int x, int y)
{
  ....
}

Но когда я пытаюсь получить доступ к функции в файле .cpp, я получаю сообщение об ошибке:

Объявление не совместимо

Ответы [ 2 ]

3 голосов
/ 10 января 2020

Определение функции в файле. cpp должно быть совместимо с его объявлением в файле .h, поэтому измените его следующим образом.

. cpp file:

#include"testclass.h"
Car& testclass::createCar(int x, int y)
{
  ....
}

Примечание что я изменил <testclass.h> до "testclass.h". используйте скобки только со встроенными заголовками.

Следуйте следующей строке, если вы хотите знать, почему вы должны использовать "testclass.h" вместо <testclass.h>, и какой из них вы должны использовать Link

1 голос
/ 10 января 2020

В вашем файле .h, & не является ссылкой на функцию. & является частью типа возвращаемого значения функции. Таким образом, функция фактически возвращает ссылку на экземпляр Car. Это поможет вам понять это, если вы действительно напишите это так:

Car& createCar(int x, int y);

Таким образом, в файле .cpp вам нужно переместить & к типу возврата, чтобы соответствовать объявлению :

#include <iostream>

class testclass {
    Car& createCar(int x, int y);
};
#include "testclass.h"

Car& testclass::createCar(int x, int y)
{
  ....
}
...