2016-11-25 23 views
0

私は自分自身にVBAを教えてくれて、過去4年間(工場、多重継承、多相設計)広く使用しているので、高度なプログラミング技術についていくつか理解しています。私は自分のスキルセットを拡張する方法として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」オブジェクトに由来します。ソース・ファイルが含まれているが

#include <stdio.h> 
#include <iostream> 

:が挙げられる次の文とともに

//template <class T> 
friend std::ostream& operator << (std::ostream& os, const Point<T>& p); 

"P1" オブジェクトのヘッダ・ファイルは、次の定義が含ま

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

答えて

関連する問題