это крошечная простая программа для моего обучения:
это объявление заголовка:
#ifndef MATH_H
#define MATH_H
class Math
{
private:
int result;
public:
int addNumbers (int , int);
};
#endif // MATH_H
это определение класса:
#include <iostream>
#include "Math.h"
using namespace std;
int Math::addNumbers(int a , int b)
{
result = a + b ;
cout<<result<<endl;
};
и этот бог чертовски Главный;)
#include <iostream>
#include "Math.h"
using namespace std;
int main()
{
Math myMath;
myMath.addNumbers(2,9);
};
и, наконец, я получил эту ошибку:
undefined reference to 'Math::addNumbers(int, int)
я должен сказать вам: файл заголовка имеет то же имя, что и мое имя класса,
в чем проблема?
с наилучшими пожеланиями.
Амин хормей
поэтому правильная основная строка должна быть такой, как показано ниже:
#include <iostream>
#include "Math.h"
#include "MathDefinition.cpp"
using namespace std;
int main()
{
Math myMath;
myMath.addNumbers(2,9);
};
Проблема в том, что в программе, которую вы пытаетесь создать, отсутствует определение для Math::addNumbers
. Вероятно, это связано с тем, что вы пытаетесь создать свой основной исходный файл.
Вам нужно сделать так, чтобы код, определяющий Math::addNumbers
попадает в вашу программу. Для этого у вас есть два основных варианта (предположим, что ваши файлы называются main.cpp и math.cpp):
Вы можете изменить свою систему сборки, чтобы скомпилировать math.cpp. Обычно это рассматривается как правильный способ справиться с этой ситуацией. К сожалению, особенности зависят от вашей системы сборки или IDE...
Например, если вы используете gcc, вы можете связать оба файла с вашим двоичным кодом, используя следующую команду сборки:
gcc -o myprogram main.cpp math.cpp
Вы можете просто #include "math.cpp"
внутри main.cpp. Это приведет к тому, что код math.cpp станет частью main.cpp после предварительной обработки. Обычно это не рекомендуется для этого, но менее ориентирован на среду, чем "правильное" решение
Возможно, вы не правильно компилируете свой код. Скомпилируйте его с помощью:
gcc main.cpp math.cpp -o math.o
Или короче:
gcc *.cpp -o math.o
Это скомпилирует файлы math.cpp и main.cpp
Math
источник для связи?