首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xCode 8-架构x86_64的未定义符号

xCode 8-架构x86_64的未定义符号
EN

Stack Overflow用户
提问于 2016-11-25 08:56:02
回答 1查看 207关注 0票数 0

我自学了VBA,并且在过去的四年里一直在广泛地使用它(工厂,多继承,多态设计),所以我对高级编程技术有了一些了解。我正在自学C++,以此来扩展我的技能集,但从编译器收到的错误消息可能会让人抓挠一段时间。我收到的错误消息"Undefined symbols for architecture x86_64“是一个常见的话题,通常是由非常简单的原因引起的。我已经审查了其中许多都无济于事。我完全不知所措。

错误消息中的行如下所示:

代码语言:javascript
复制
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char>  >&, Point<double> const&)", referenced from:

  TestPoint() in TestPoint.o

TestPoint.cpp包含以下行:

代码语言:javascript
复制
cout << "p1: " << p1 << endl;

这是错误的直接原因,但我知道错误的来源来自上面提到的"p1“对象。

"p1“对象的头文件包含以下定义:

代码语言:javascript
复制
//template <class T>
friend std::ostream& operator << (std::ostream& os, const Point<T>& p);

以及以下包含语句:

代码语言:javascript
复制
#include <stdio.h>
#include <iostream>

而源文件包含:

代码语言:javascript
复制
template <class G>
std::ostream& operator << (std::ostream& os, const Point<G>& p)
{//Print
    os << "(" << p.m_first << "," << p.m_second << ")\n";
    return os;
}

使用这些包含语句:

代码语言:javascript
复制
#include <math.h>
#include <iostream>
#include "Point.hpp"

我也在尝试学习模板,我的一些编程伙伴告诉我,模板本身就是一个很难的话题。

定义和实现似乎是匹配的,但我不知道为什么编译器会抱怨。任何帮助都将不胜感激。

我正在使用Xcode 8.1

EN

回答 1

Stack Overflow用户

发布于 2016-11-27 09:10:48

我的问题与模板和"friend“操作符的交互有关。我的一个朋友发现了这个似乎解决了我的问题:

https://stackoverflow.com/questions/12476535/c-overloading-operators-on-template-class-throws-linker-errors

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40796300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档