Я очень новичок в C++, если не сказать больше. Однако я не могу найти ответ на этот конкретный вопрос в любом месте.C++ странное поведение
Это тоже не кодекс, так как я пытался загрузить много кода и скомпилировать его с помощью g ++ или просто сделать.
Кажется, что всякий раз, когда я включить класс заголовка в моем main()
он бросает ошибку компоновщика:
Undefined symbols for architecture x86_64:
"House::getNumBath()", referenced from:
printHouse(House) in houses-91268b.o
"House::getSqft()", referenced from:
printHouse(House) in houses-91268b.o
"House::getColor()", referenced from:
printHouse(House) in houses-91268b.o
"House::House(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, int, double)", referenced from:
_main in houses-91268b.o
"House::House()", referenced from:
_main in houses-91268b.o
"House::~House()", referenced from:
_main in houses-91268b.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Это не происходит независимо от того, какой код нужно скачать или производить и, кажется, связана с функцией конструктора реализованного как MyClass :: MyClass (/ * args * /);
Кто-то предложил, что я должен включить .cpp
файл в моем файле main
вместо .h
, да это работает. Но это очень неправильно, поскольку меня всегда учили, что интерфейсы предназначены для этого. В противном случае, какова их цель?
С предложением другого человека (googled), теперь я загружаю Xcode на 10 ГБ и надеюсь, что это поможет. Кажется, похоже, что это не сработает. Что не так с C++ здесь? Я почему-то пропустил C++ 11 (опять же, почему на относительно новой ОС?)?
UPDATE:
Я схватил код с другой учебник, который бросает мне то же самое:
dog.cc
#include "Dog.h"
Dog::Dog() {
}
dog.h
#ifndef DOG_H
#define DOG_H
class Dog {
public:
Dog();
protected:
private:
};
#endif
main.cc
#include "Dog.h"
int main() {
Dog barky;
return 0;
}
Броски как же после того, как я делал (они находятся в той же папке, те):
g++ main.cc
или
make ./main
Это, вероятно, самый простой пример, который я хотел бы попробовать, так как у меня никогда не было таких проблем, как раньше, в C, либо с использованием Makefile
, либо просто с cc
файлом.
смог собрать и связать наименьшую программу C++ Вы? 'int main() {}' – Casey
да, это возможно. пока я не делаю MyClass :: MyClass()/вызов конструктора –
Покажите нам определение и реализацию класса дома и определение и реализацию MyClass. – Casey