2013-10-27 3 views
0

Я создал простой класс с файлом заголовка (.h), файл реализации класса (.cpp) и основной файл (.cpp).Классы, которые не связаны правильно

Там, кажется, нет никаких ошибок, пока не попробуешь ссылки (здание) в х-коде, где я получаю эту ошибку:

Undefined symbols for architecture x86_64:
"bbq::bbq(std::__1::basic_string, std::__1::allocator >, std::__1::basic_string, std::__1::allocator >)", referenced from: _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)*

И вот мой код:

int main() 

{ 

bbq barbeque ("coleman", "101a"); 


barbeque.loadCoals(); // print output 

Файл заголовка :

class bbq 
{ 
private: 
string brand, model; 



public: 
bbq (string brand, string model); 
void loadCoals();} 

и функции определения:

void bbq::loadCoals() 
{ 

cout<<"Loading Coleman Grill 101A with coals!"; 

} 

ответ

0

Вы не писали bbq :: bbq (строка бренда, строка модели); реализация в файле .cpp.

Вы должны реализовать:

bbq::bbq(string brand, string model) { 
    this->brand = brand; 
    this->model = model; 
} 
+0

Спасибо, я просто написал в файле .cpp, и она работает. bbq :: bbq (строка бренда, строка модели) {} , но что бы я разместил (если есть) внутри функциональных скобок, так как мои другие функции определены отдельно. @ Pierre-Emmanuel-Lallemant – user2924131

+0

Я изменил свой ответ;) –

+0

Спасибо, однако, когда я выводил (<< << модель <<, в следующих функциях loadcoals() строки не выводятся, как я здесь: bbq барбекью ("Coleman", "101") они вместо этого пустых строк @Pierre Эммануэль Лаллеман – user2924131

Смежные вопросы