0

コードはその中で機能していますcouts hahaが、次のように表示されているためエラーが発生します。

Process returned -1073741819 <0xC0000005>

エラー メッセージを送信するかどうかを知らせるウィンドウが表示されます。どうしてこれなの?

#include <iostream>

using namespace std;

template <class A>

    A print( A a ) {
        cout << a;
    }

template <class T>

    class David {
        T a;
        public:
            David( T something ) : a( something ) {}
            void laugh() {
                print(a);
            }
    };

int main() {

    David <string> Do("Hahaha");

    Do.laugh();

}
4

1 に答える 1

6
template <class A>

    A print( A a ) {
        cout << a;
    }

それは間違っています。関数には戻り値がないため、コンパイラはスタックからガベージを返します。そして、私はこの宣言になると思います

template<class A>
void print(const A& a) { cout << a; }
于 2012-07-14T12:53:21.767 に答える