特定のクラスのインラインメンバ関数を使用しようとしています。たとえば、インライン化せずに関数宣言と実装のような次のとおりです。ヘッダファイル内インライン関数リンカエラー
:
int GetTplLSize();
.cppファイル内:
int NeedleUSsim::GetTplLSize()
{
return sampleDim[1];
}
何らかの理由で、私は "を置けば実装と宣言のどちらか一方と同様に、インラインのキーワードを使用すると、次のようにリンカーエラーが発生します。
Creating library C:\DOCUME~1\STANLEY\LOCALS~1\TEMP\MEX_HN~1\templib.x and object C:\DOCUME~1\STANLEY\LOCALS~1\TEMP\MEX_HN~1\templib.exp mexfunction.obj : error LNK2019: unresolved external symbol "public: int __thiscall NeedleUSsim::GetTplLSize(void)" ([email protected]@@QAEHXZ) referenced in function _mexFunction mexfunction.mexw32 : fatal error LNK1120: 1 unresolved externals C:\PROGRA~1\MATLAB\R2008B\BIN\MEX.PL: Error: Link of 'mexfunction.mexw32' failed.
このエラーを取り除くために必要なもの(例:これらのインラインメンバー関数を作成する点で私は間違って何をしていますか?)
これは唯一の方法ですか? (私は可読性の理由から宣言と実装を別々に分けたい) – stanigator
基本的にはい。コンパイラは、関数の本体を知っていなければならないので、本体はインクルードされたヘッダファイルになければなりません。 しかし、まだクラス宣言で関数を宣言して、実装をヘッダファイルの後の場所に追加することはできます。私は参照してください – Hans
。私はちょうどこの方法でコードを書いて生きなければならないと思う。アドバイスをいただきありがとうございます。 – stanigator