Я изучаю C++. Я попытался связать отдельные файлы, пытаясь создать класс в отдельном файле.
Когда я создаю и запускаю программу, я получаю это сообщение об ошибке:
Неопределенные символы для архитектуры x86_64: "Sally :: printCrap()", на которые ссылаются: _main в Main-8bfa94.o "Sally :: Sally()", на которые ссылаются: _main в Main-8bfa94.o ld: symbol (s) не найден для архитектуры x86_64 clang: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов) [Закончено в 0,3 с кодом выхода 1]
Вот мой код:
main.cpp
#include <iostream>
#include <string>
#include "Sally.h"
using namespace std;
int main()
{
Sally sallyObject;
Sally *sallyPointer = &sallyObject;
sallyObject.printCrap();
sallyPointer->printCrap();
}
Sally.h
#ifndef SALLY_H
#define SALLY_H
class Sally
{
public:
Sally();
void printCrap();
};
#endif
Sally.cpp
#include "Sally.h"
#include <iostream>
using namespace std;
Sally::Sally()
{
}
void Sally::printCrap(){
cout << "Crap \n";
};
Любая помощь будет принята с благодарностью!
Просто запустите приложение терминала OS X, затем введите
cd "/Users/BEASTMACHIENEjr/Desktop/C++ Файлы", чтобы перейти в эту папку, затем введите g++ Main.cpp Sally.cpp. Это приведет к созданию файла с именем a.out, который затем можно запустить, набрав. /a.out
PS: если вы используете Sublime Text
, я рекомендую создать Makefile
чтобы вы могли скомпилировать код, связанный с несколькими исходными файлами.
Java
. В C++
#include
- это директива препроцессора, которая слепо вставляет текст из включенного файла, не более того. С добавлением модулей (когда-нибудь, возможно, в недалеком будущем) все должно стать более приправленным 21-м веком.
Sally.cpp
(и поэтому не связываете его). Попробуйтеg++ main.cpp a.cpp