2016-09-19 11 views
0
Undefined symbols for architecture x86_64: 
    "Matrix::~Matrix()", referenced from: 
     _main in p1.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

xcodeでコンパイルしようとするとこのエラーが発生します。問題は、ヘッダーファイル内のこのデストラクタ宣言にあります。私がデストラクタをコメントアウトすると、正常に構築されます。Xcodeの未定義シンボル〜デストラクタ

class Matrix { 
public: 
    ~Matrix();  
}; 
+3

デストラクタはどこで定義されていますか? – NathanOliver

+0

私はmain、Matrix.hpp、Matrix.cppの3つのファイルを持っています。デストラクタはMatrix.hppで宣言され、Matrix.cppで定義されます。 – Char

+0

Matrix.cppで定義されているものは何ですか?本当にコンパイル/リンクされていますか? –

答えて

0

デストラクタを定義していません。あなたがコメントアウトすると、デストラクタは暗黙的に宣言されたデストラクタになり、リンカがそれを見つけます。あなたは "...が定義される"と述べています。これはあなたがそれをまだ定義していないことを意味しますか? cppreference.comから

http://en.cppreference.com/w/cpp/language/destructor

は、ユーザーが宣言したデストラクタがクラス型(構造体、 クラス、または共用体)のために提供されていない場合、コンパイラは常に インラインとしてデストラクタを宣言しますそのクラスのpublicメンバー。

関連する問題