非静态成员函数的非法调用

yxy10072510329 2009-09-25 10:09:18
在MyRainView.h里,我定义了下面变量和函数:
public:
void setValue(CString,int,int,int);
省略若干行..............
bool initFog; //初始化雾特效
bool initWind; //初始化风特效
bool initRain; //初始化与特效

int Wind; //设置风力的大小
int Rain;
int Fog;
//

CString FilePath; //高度图文件路径名

现在我想在EnvironmentalSettings01.cpp中调用这个setValue(,,,)函数,主要代码如下
	if(MessageBox("确定应用这些设置吗?","应用设置",MB_OKCANCEL |MB_DEFBUTTON2| MB_ICONSTOP )==IDOK)
{
CWnd *wnd=this->GetParent();
CMyRainView::setValue(FilePath,Wind,Rain,Fog);
//CMyRainView::setValue(FilePath,Wind,Rain,Fog);
return;
}

然后就出现了错误非静态成员函数的非法调用,高位高手帮帮忙,谢谢
...全文
1849 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Johnny_Lx 2009-09-25
  • 打赏
  • 举报
回复
函数的访问权限从protected 改成public就行了
yxy10072510329 2009-09-25
  • 打赏
  • 举报
回复
二楼的方法是解决了当前的问题,但新的问题又出现了。。。
error C2248: “CMyRainView::CMyRainView”: 无法访问 protected 成员(在“CMyRainView”类中声明)
gong_max 2009-09-25
  • 打赏
  • 举报
回复
CSDN蝈蝈的效率简直是.....,哈哈
zhouguidi 2009-09-25
  • 打赏
  • 举报
回复
楼上各位正解
幸福官 2009-09-25
  • 打赏
  • 举报
回复
如果你想直接引用该方法的话就得在setValue方法声明时加上static
否则就声明CMyRainView类的一个实例,例CMyRainView rw;
fishion 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vieri_ch 的回复:]
CMyRainView mv;
mv.setValue(FilePath,Wind,Rain,Fog);

非静态成员,必须首先实例化一个类对象。才能使用,如果没有构造函数,这样就行了

[/Quote]
或者用类似这样的
setValue(CMyRainView *pmv)
{
pmv->FilePath;
.....
}
...
CMyRainView mv;
.............
...........
CMyRainView::setValue(&mv);
levelmouse 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vieri_ch 的回复:]
CMyRainView mv;
mv.setValue(FilePath,Wind,Rain,Fog);

非静态成员,必须首先实例化一个类对象。才能使用,如果没有构造函数,这样就行了

[/Quote]
同上

CWnd *wnd=this->GetParent();
干嘛用的?
oyljerry 2009-09-25
  • 打赏
  • 举报
回复
static void setValue(CString,int,int,int);
定义静态成员函数
feilinhe 2009-09-25
  • 打赏
  • 举报
回复
CMyRainView::这样用的话就要在前面定义的时候加上static
尘雨 2009-09-25
  • 打赏
  • 举报
回复
CMyRainView mv;
mv.setValue(FilePath,Wind,Rain,Fog);

非静态成员,必须首先实例化一个类对象。才能使用,如果没有构造函数,这样就行了

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧