无效地使用成员
Invalid use of member
我想在静态函数dayInMonths()
中调用数组的字段,但编译器告诉我"在静态函数中无效使用成员Date::m_months
"。我不知道我做错了什么。
. h
class Date
{
public:
..
Months* m_months;
..
public:
Date(..,unsigned int months=0,..);
~Date();
public:
static Days daysInMonth(unsigned int days);
};
class Months
{
public:
unsigned int m_months;
unsigned int m_monthsArray[13];
public:
Months(unsigned int months = 0);
..
date.cpp
Date::Date(unsigned int days, unsigned int months, unsigned int years)
{
..
m_months->m_months = months;
..
}
Days Date::daysInMonth(unsigned int days=0){
return m_months.m_monthsArray[days];
}
months.cpp
Months::Months(unsigned int months)
{
m_months = months;
m_monthsArray[0] = 29;
m_monthsArray[1] = 31;
...
静态成员函数没有this
。这一行
return m_months.m_monthsArray[days];
等价于
return this->m_months.m_monthsArray[days];
而daysInMonth
是静态函数。静态成员函数由类的所有实例共享,只能访问声明它的类的static members
、enumerators
和嵌套类型的名称
如果你想让daysInMonth
对非静态成员进行操作,就不应该把它设为static。
public:
Days daysInMonth(unsigned int days);
现在可以根据所属对象对成员进行操作。
一般来说,如果你没有静态成员变量,那么你可能不需要静态成员函数(除了为了封装)。
相关文章:
- C++无效使用非静态成员函数?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 指向成员的指针对托管类无效
- 在 stream_descriptor::async_wait 中无效使用非静态成员函数
- 对象分配-成员函数的使用无效错误
- C++ 在具有数组成员的类上无效指针/双精度释放
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- C++:易失性实例中的易失性成员函数 - 将数组分配给指针是无效的转换?
- 使用 vector.sort() 的非静态成员函数无效使用
- 设置类的枚举成员无效地使用"枚举"
- 无效使用非静态成员函数 c++ 线程 linux
- 无效使用非静态成员函数 int test::funcAB(int, int)
- 当使用嵌套类功能时,使用非静态数据成员的使用无效,但是当函数未固定时可以
- 错误:在 C++ 中无效使用非静态成员函数
- 在静态成员函数中无效使用成员“xx::x”
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 使用矢量指标对非静态数据成员的使用无效
- 错误:"指向成员的指针对托管类无效"
- 非静态数据成员错误的使用无效