私は自分自身に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