非法引用非静态成员

时间:2011-03-01 10:15:42

标签: c++ visual-c++

我正在尝试从当前类的不同类中引用cstring mycustompath

CString test = CBar::mycustompath + _T("executables\\IECapt");

但我得到了这个错误:

  

错误C2597:非法引用非静态成员'CBar :: mycustompath'c:\ work \ b.cpp 14

如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

这意味着mycustompath是特定CBar对象的属性,而不是CBar类的属性。您需要实例化一个CBar类

CBar* myBar = new CBar();
CString test = myBar->mycustompath + _T("executables\\IECapt");

或引用你已经拥有的,或者,如果mycustompath没有因CBar对象而异,你可以在类中将其更改为static:

class CBar
{
public:
    static CString mycustompath;
}

答案 1 :(得分:3)

这表明CBar::mycustompath不是CBar的静态成员变量。您必须创建CBar的实例才能访问它:

CBar bar;
CString test = bar.mycustompath + _T("executables\\IECapt");