【发布时间】:2012-03-31 14:08:21
【问题描述】:
有没有办法从 C++ 主类中包含的另一个方法调用非静态类成员方法?如果是这样,代码会是什么样子?
问题是,我不能将此特定方法声明为静态,因为它使用同一类中的其他方法,如果我将其设为静态,这些方法将不起作用。
我正在尝试使用:
MyClass::myClassMethod();
来自主类中的方法,但它给了我错误:非静态成员引用必须相对于特定对象。
为了澄清,myClassMethod() 使用 MyClass 中的其他方法,例如:
void myClassMethod() {
...
anotherClassMethod();
}
所以如果我将 myClassMethod 设为静态,它会干扰调用 anotherClassMethod()。
【问题讨论】:
-
在阅读了已经发布的答案中的问题和 cmets 之后,了解更多关于您正在尝试做什么的信息仍然很有用。
myClassMethod本身是静态的吗?它是从哪里调用的?你能改变方法的参数吗?分配给您的问题的目标是什么? -
看起来你真的需要考虑一下你可能想要什么行为。静态方法和非静态方法的主要区别在于后者需要访问类数据,或者可能进行内部相同的虚拟调用。如果
myClassMethod调用非静态的anotherClassMethod,是否需要这样做?如果没有,请将它们设为静态。如果是这样,那么当该方法尝试访问数据时,您期望会发生什么?
标签: c++ class methods static-methods