0

私には2つのクラスがあります。1つは呼び出されGrocery、もう1つは呼び出されますStrings

Grocery.cppで、「Strings」クラスの「copyString」という関数を使用しようとすると、次のエラーが発生します。

識別子「copyString」は未定義です

「Strings」クラスは、strcmp、strcpyなどの基本文字列関数の単なるジェネリッククラスです。

「Grocery」クラスでは、「Strings」オブジェクトを作成したくありませんが、「Math」クラスがC#で使用されているように使用しています。クラス名を示し、ドットを使用してクラスの関数を呼び出すだけです。

上記のC#の「Math」クラスと同じ機能を持つクラス「Strings」を作成するにはどうすればよいですか?

どうもありがとう!男

4

3 に答える 3

2

Stringsメソッドを持つクラスがある場合は、インスタンスgetStringLength()を呼び出す必要があります。getStringLength()Strings

Strings s = ....;
s.getStringLength();

または、メソッドを持つ名前空間がありますStrings。この場合、次のように呼び出す必要があります。

Strings::getStringLength();

関数がStringsクラスに関連していない場合は、適切な名前空間で非メンバー関数にすることを検討してください。

Strings.h:

namespace StringFunctions
{
  int getStringLength();
}

Strings.cpp:

StringFunctions::getStringLength() { return 42; }
于 2012-11-04T19:05:14.403 に答える
1

getStringLength画像からは、 (無料の関数)を宣言して使用しようとしているように見えますが、関数をタイプのメンバーであるかのように定義していますStrings

Strings::理由を本当に知らずに書いているのでしょうか?ファイルがと呼ばれるからといって、それを書くのではありませんStrings.cpp

無料の(非メンバー)関数はStrings::、その定義の前にありません。コメントでこれまでに言ったことから、あなたの唯一の間違いはStrings::、すべきではないときに書くことだったと思います。

于 2012-11-04T19:04:27.387 に答える
0
  1. 通常、.cppファイルは含めないでください。
  2. 使用したいファイルを使用したいファイルに含める必要があります。
于 2012-11-04T19:04:06.307 に答える