それ以外の:
class A
{
public:
int _a;
};
次のようなことができます。
#include <iostream>
class Integer
{
public:
Integer(int value) : value(value)
{
}
operator int()
{
std::cout << "Integer called\n";
return value;
}
private:
int value;
};
class A
{
public:
A() : _a(5) {}
Integer _a;
};
int main(int argc, char *argv[])
{
A a;
std::cout << a._a << std::endl;
return 0;
}
あなたの例に従ってください:
暗黙の変換演算子が作業を行います。
それは印刷されます:
呼び出された整数
5
ヒント: メンバー変数を public にしないでください。常にアクセサ メソッドを提供します。
編集
申し訳ありませんが、 FILEとLINEを忘れていました:
LINEまたはFILEを挿入する方法が見つかりませんでした。前処理中のマクロ置換中に実行時に暗黙のキャストが行われるためです。
できることは、@veer が指すように、暗黙的な変換関数にブレークポイントを置き、各呼び出しを手動でトレースすることです。
編集 2
少なくとも、実行時にコール スタックを確認することは可能です。
Linux では execinfo を介して、Windows では StackWalker を介してこれを行うことができます。