一个C++运算符有关问题,这次一定要搞清楚了,高分
一个C++运算符问题,这次一定要搞清楚了,高分求助
class CWnd : public CCmdTarget
{
public:
HWND m_hWnd; // must be first data member
operator HWND() const;
是把HWND转化成运算符,但是一直不知道之后HWND用在哪里?怎么用的?
写如下测试代码,T就是仿照HWND来定义的. 接下来T怎么用?就是能不能给个表达式。
#define T void*
class TEST
{
public:
int *t;
operator T();
void testFunction();
protected:
private:
};
TEST::operator T()
{
return t;
}
void TEST::testFunction()
{
T AA; // 这些都可以编译过,
T(aa); //
}
------解决方案--------------------
------解决方案--------------------
"是把HWND转化成运算符,但是一直不知道之后HWND用在哪里?怎么用的?",并不是把HWND转换成运算符,HWND只是返回值,运算符是"",比如说看到
就是调用win的""方法,比较隐晦,你可以自己试试,operator 只写返回值不写符号,然后在外面类似的调用.
class CWnd : public CCmdTarget
{
public:
HWND m_hWnd; // must be first data member
operator HWND() const;
是把HWND转化成运算符,但是一直不知道之后HWND用在哪里?怎么用的?
写如下测试代码,T就是仿照HWND来定义的. 接下来T怎么用?就是能不能给个表达式。
#define T void*
class TEST
{
public:
int *t;
operator T();
void testFunction();
protected:
private:
};
TEST::operator T()
{
return t;
}
void TEST::testFunction()
{
T AA; // 这些都可以编译过,
T(aa); //
}
C++
MFC
类
------解决方案--------------------
class TEST
{
public:
int *t;
operator int*();
void testFunction();
TEST(int *p)
{
t = p;
}
protected:
private:
};
TEST::operator int*()
{
return t;
}
这样用
int n = 1;
TEST t(&n);
int *p = t;
------解决方案--------------------
"是把HWND转化成运算符,但是一直不知道之后HWND用在哪里?怎么用的?",并不是把HWND转换成运算符,HWND只是返回值,运算符是"",比如说看到
CWnd win;
win.create();
HWND h = win;
就是调用win的""方法,比较隐晦,你可以自己试试,operator 只写返回值不写符号,然后在外面类似的调用.