我自学了VBA,并且在过去的四年里一直在广泛地使用它(工厂,多继承,多态设计),所以我对高级编程技术有了一些了解。我正在自学C++,以此来扩展我的技能集,但从编译器收到的错误消息可能会让人抓挠一段时间。我收到的错误消息"Undefined symbols for architecture x86_64“是一个常见的话题,通常是由非常简单的原因引起的。我已经审查了其中许多都无济于事。我完全不知所措。
错误消息中的行如下所示:
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, Point<double> const&)", referenced from:
TestPoint() in TestPoint.oTestPoint.cpp包含以下行:
cout << "p1: " << p1 << endl;这是错误的直接原因,但我知道错误的来源来自上面提到的"p1“对象。
"p1“对象的头文件包含以下定义:
//template <class T>
friend std::ostream& operator << (std::ostream& os, const Point<T>& p);以及以下包含语句:
#include <stdio.h>
#include <iostream>而源文件包含:
template <class G>
std::ostream& operator << (std::ostream& os, const Point<G>& p)
{//Print
os << "(" << p.m_first << "," << p.m_second << ")\n";
return os;
}使用这些包含语句:
#include <math.h>
#include <iostream>
#include "Point.hpp"我也在尝试学习模板,我的一些编程伙伴告诉我,模板本身就是一个很难的话题。
定义和实现似乎是匹配的,但我不知道为什么编译器会抱怨。任何帮助都将不胜感激。
我正在使用Xcode 8.1
发布于 2016-11-27 09:10:48
我的问题与模板和"friend“操作符的交互有关。我的一个朋友发现了这个似乎解决了我的问题:
https://stackoverflow.com/questions/40796300
复制相似问题