2011-08-05 23 views
0

私のC++コードに有線の問題が発生しました。私は、コマンドライン引数を受け入れるようにTCLAPソフトウェアを使用しています、とフラグの一つは、ファイル名です:はconst char *をメソッドに渡しましたが、代わりにchar const *エラーを受け取りました

TCLAP::ValueArg<string> Poly ("p", "poly", "file name of the polynomial", false, "", "string"); 

私も3つのパラメータを受け入れ、別の機能を持っている、

void GetBiPoly(const char *filename, BiPoly<BigFloat> *u, BiPoly<BigFloat> *v); 

私が渡していますこのように機能GetBiPolyにポリ列:

benchmark::GetBiPoly(Poly.getValue().c_str(), &fxy, &gxy); 

私はプログラムをコンパイルすると、それは私に次のエラーを与える:

miranda.cpp:(.text+0x1900): undefined reference to `benchmark::GetBiPoly(char const*, CORE::BiPoly<CORE::BigFloat>*, CORE::BiPoly<CORE::BigFloat>*)' 

唯一の違いは、エラー情報のファイル名のタイプがchar const*であり、定義がconst char*であることです。誰も私が問題と思われるものを教えてもらえますか?ありがとう。

+0

2つの形式は同等です。問題は、実装にリンクしていないか、別の名前空間にあることです。 – pyroscope

答えて

1

char const *const char *はまったく同じものです。あなたの問題はメッセージのその部分に関連していません。あなたのエラーは、あなたが関数benchmark::GetBiPoly()を呼び出しているということですが、リンカーはリンクしているオブジェクトでそれを見つけることができません。その関数はどこに定義されていますか?あなたはそれをリンクしていますか?その名前空間にありますか?

+0

あなたは右のカール、私はネームスペースでうんざりしました。クイックレスポンスのおかげで:)良いレッスンを受けました ちなみに、charのconst *とconst char *は同じですか?申し訳ありません私はむしろC++で新しいです –

+0

@da_zhuang:はい、同じです。どちらも 'const'ではないポインタです(あなたが好きな場合は、別の変数のアドレスを格納することができます)。' const'とみなされる 'char'を指します(このポインタを使用して' charそれは指摘している) –

関連する問題