Я пытаюсь протестировать некоторые примеры, используя перегрузку операторов, но сталкиваюсь с некоторыми проблемами.Я полагал, что эти проблемы довольно распространены и нашел много ответов, которые были полезны, но я все еще не могу заставить этот простой код работать.
Я использую vscode для Mac и пробовал использовать g ++ и связывать файлы, но возникает та же ошибка.
// test.h file
#include <iostream>
class test {
public:
int num;
test();
test(int);
test operator+ (test);
friend std::istream& operator >> (std::istream& in, test);
friend std::ostream& operator << (std::ostream& out, test);
};
// test.cpp file
#include <iostream>
#include "test.h"
test ::test(){
}
test::test(int a){
num = a;
}
test test :: operator+ (test ao){
test brandnew;
brandnew.num = num + ao.num;
return brandnew;
}
int main(){
test a(25);
test b(25);
test c;
c = a +b;
std::cout << c;
return 0;
}
Я ожидаю получить результат 50 в моем выводе.Вот ошибка: неопределенные символы для архитектуры x86_64: «operator << (std :: __ 1 :: basic_ostream> &, test)», на который ссылается: _main в test-823d00.o ld: символы не найдены для архитектурыx86_64 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)