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 回答