使用函数和声明顺序返回其他类变量 我尝试做一个C++类函数,它可以返回其他类值。如果首先定义了类A,代码就可以工作,但是我有更多的代码,我不想弄乱它们。我想我需要某种A类的转发声明

使用函数和声明顺序返回其他类变量 我尝试做一个C++类函数,它可以返回其他类值。如果首先定义了类A,代码就可以工作,但是我有更多的代码,我不想弄乱它们。我想我需要某种A类的转发声明,c++,visual-c++,forward-declaration,C++,Visual C++,Forward Declaration,我需要什么样的前瞻性声明才能完成这项工作?我所有的代码都在一个文件中。如果我正确地将我的类分割成多个文件并将它们包含到项目中,这个问题会消失吗?或者这对VC++编译器有什么影响 下面是半伪代码 // forward declaration class A; // class deifinitions class B { private: int testvalue; public: void settestva

我需要什么样的前瞻性声明才能完成这项工作?我所有的代码都在一个文件中。如果我正确地将我的类分割成多个文件并将它们包含到项目中,这个问题会消失吗?或者这对VC++编译器有什么影响

下面是半伪代码



    // forward declaration
    class A;

    // class deifinitions
    class B {
    private:
        int testvalue;
    public:
        void settestvalue(A &Aobj);
    }

    void B::settestvalue(A &Aobj) {
        testvalue = Aobj.settestvalue();
    }


    class A {
    private:
        int test = 10;
    public:
        int testvalue();
    };

    int A::testvalue() {
        return test;
    }


    // mainloop


    A Aobj;
    B Bobj;

    Bobj.settestvalue (Aobj);


只要把B的成员函数的定义放在A的类定义之后。

只要把
void B::settestvalue(A&Aobj)
的定义放在类
A
的定义之后。得到一些其他类,过一会儿,排序就不可能了。还是我误解了这是一个很好的提示,您不应该将所有内容都放在一个文件中。制作单独的头文件和实现文件。那么VC++编译器对代码的处理是否有所不同?它会按申报顺序排序吗?我想我需要看看这个。谢谢。@John:如果订购变得不可能,那么你应该重新设计是一个好迹象,因为你显然创建了面向对象的意大利面代码版本。效果很好!简单!谢谢