-1

私はC++に非常に慣れていないので、これは非常に簡単かもしれません。同じクラスのメソッドを呼び出す方法を教えてください。私の友人は、コンストラクターが必要だと私に言いました。コード:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    disMessage("");
    return 0;
}

編集:新しいクラス/コンストラクターなしでメソッドを呼び出すにはどうすればよいですか

void disMessage(string a)
{
    cout << "\n" << a << endl;
}
4

4 に答える 4

4

つまり、後で同じファイル(クラスではない) で定義された関数(メソッドではない)を呼び出すにはどうすればよいのでしょうか。ここではクラスを定義していないので、コンストラクターについて心配する必要はありません。(おそらく、すべてのコードをクラスにラップすることを強制する言語に慣れているでしょう。C++ へようこそ: ここにはそのナンセンスはありません。)

関数を呼び出す前に関数を宣言する必要があるため、次のいずれかを行います。

void disMessage(string);   // declaration

int main() {
    disMessage("safas");   // use (after declaration)
    return 0;
}

void disMessage(string a){ // definition
    cout << "\n" << a << endl;
}

または、関数定義を使用ポイントの前に移動します。定義は宣言でもあります。

void disMessage(string a){ // definition and declaration
    cout << "\n" << a << endl;
}

int main() {
    disMessage("safas");   // use (after declaration)
    return 0;
}
于 2013-09-17T18:12:12.047 に答える
1

この例は、クラスの内外からメソッドを呼び出す方法を理解するのに役立つかもしれません。

class foo
{
public:
    void disMessage(string a)
    {
        cout << "\n" << a << endl;
    }

    void bar()
    {
        disMessage("foo::bar");
    }
};

int main() {
    foo f;

    f.disMessage("main");
    f.bar();

    return 0;
}
于 2013-09-17T18:11:50.863 に答える
0

コンストラクターには、クラスとインスタンス化されたオブジェクトの両方が必要です。

class disMessage {
  public:
  disMessage(string a) {
    cout << "\n" << a << endl;
  }
};

int main() {
  disMessage obj("safas");
  return 0;
}
于 2013-09-17T18:11:41.457 に答える
0

簡潔な答え?次のように、メソッドをdisMessage(string a)メソッドの上に移動します。main()

void disMessage(string a){

    cout << "\n" << a << endl;

}

int main() {

    disMessage("safas");

    return 0;

}

これは、記述しているコードのタイプが原因です (これについては以下で詳しく説明します)。これは、関数を呼び出す前に、コンパイラが関数を見つける必要があることを意味します。

しかし、あなたがここに書いたのはオブジェクト指向コード (すなわちクラスベース) ではありません。これは実際には単純な C コードです。これは巨大な主題であるため、これを適切に理解するには、オブジェクト指向プログラミングについて少し読む必要があります。

于 2013-09-17T18:14:02.540 に答える