未定義的符號我自學了VBA並一直在使用它被廣泛用於在過去的4年(工廠,多inhertiance,多形設計),所以我有先進的編程技術有一些瞭解。我自學C++作爲擴大我的技能的一種方式,但是從編譯器收到錯誤消息可以留下一個撓頭的相當長的一段時間。我收到的錯誤消息「架構x86_64的未定義符號」是一個常見主題,通常由非常簡單的東西引起。我已經審查了其中許多無濟於事。我完全喪失了。的Xcode 8 - 適用於建築x86_64的
在錯誤消息中的行如下所示:
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, Point<double> const&)", referenced from:
TestPoint() in TestPoint.o
TestPoint.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工作