申し訳ありませんが、非常に基本的な質問であれば、次のプログラムを実行しようとしていますが、セグメンテーション違反が発生しています。
私は何を理解していますか?
演算子 T によって t が T* に変換される関数 proc(t) があります。したがって、 proc(t) 関数を実行している間、 T へのポインター型があり、これは display () 関数を呼び出すのに適しています。
私は何をしたいですか?
1) どこで間違いを犯していますか?.
2) 私の理解は正しいですか?
#include <iostream>
using namespace std;
template <typename T>
class sPtr
{
private:
T * __pointee;
public:
operator T * () {
cout <<"Inside T* () "<<endl;
};
explicit sPtr ( T * t )
{
__pointee = t;
};
T * operator->() {
return __pointee;
}
};
class JTest
{
private:
int x;
public:
JTest ( int l=100) { x=l; };
void display ();
};
void JTest::display()
{
cout <<"Display API x is "<<x<<endl;
}
void proc (JTest * tmp)
{
cout <<" proc"<<endl;
tmp->display ();
cout <<"Invoking JTest -> display "<<endl;
}
int main ( int argc, char ** argv)
{
sPtr <JTest> t(new JTest);
t->display();
proc(t); // Invokes operator T*().
}