在C ++中,我希望能够在同一个类中调用方法,而无需创建整个类的对象。这个类很庞大,我不想为一个对象创建一个巨大的内存位置。我习惯用C#编程。
在C#中我可以做到这一点
class test()
{
private void A()
{
B();
}
private void B()
{
doSomething;
}
}
在C ++中我的印象是我必须做的。
class test()
{
public:
static void A();
void B();
};
void test::A()
{
test t;
t.B();
}
void test::B()
{
doSomething;
}
}
我不想让B()静态,也不想创建测试对象,因为实际上我的类比这要大很多,创建类的对象会使用我不想要的内存至。
有没有办法可以在C ++中用C#完成我的工作?
答案 0 :(得分:6)
没有。如果B需要一个对象,你必须给它一个对象。如果B不需要对象,则声明它为static
。 C#没有什么不同 - 在您的示例中,A
不是静态的,因此对象已经存在。
答案 1 :(得分:3)
static void A();
void B();
您根本无法使用static
函数来调用非静态函数。
<强>解决方案强>:
将B
标记为static
(如果它不依赖于当前对象),因此您不必创建新对象。我认为A
应该是非静态的。