Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;来自同一类的方法调用 在C++中,我希望能够在不创建整个类的对象的情况下调用同一个类中的方法。这个类很大,我不想为一个对象创建一个巨大的内存位置。我习惯用C语言编程_C++ - Fatal编程技术网

C++;来自同一类的方法调用 在C++中,我希望能够在不创建整个类的对象的情况下调用同一个类中的方法。这个类很大,我不想为一个对象创建一个巨大的内存位置。我习惯用C语言编程

C++;来自同一类的方法调用 在C++中,我希望能够在不创建整个类的对象的情况下调用同一个类中的方法。这个类很大,我不想为一个对象创建一个巨大的内存位置。我习惯用C语言编程,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

在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++中实现我的能力? 您根本不能使用
static
函数调用非静态函数

解决方案
B
也标记为
static
(如果它不依赖于当前对象),因此您不必创建新对象。否则我认为A应该是非静态的。

不。如果B需要一个对象,你必须给它一个对象。如果B不需要对象,则将其声明为static。C是没有区别的——在你的例子中,<>代码> A/COD>不是静态的,所以对象已经存在。

当你尝试C++中的第一个时,你会得到什么错误?您需要先放置
B()
,以便编译器可以找到它。您希望在不创建类对象的情况下调用的类方法应该是静态的,并且它不能修改任何非静态的内容。因此,不管函数是不是静态的,那么在调用它之前必须创建对象。因此,在C++示例中,如果(a)不是静态的,那么我就不必在测试的()的内部调用对象()(@)USE1601045,因为非静态方法已经有了它们调用的对象。如果一个方法需要一个对象来操作,它就不能是静态的。如果它不需要一个对象来操作,它应该是静态的。@user1601045:正确,因为
A
将已经是一个对象的一部分,它可以简单地将同一个对象用于
B
     static void A();
     void B();