C++ 奇怪的用法?

标签 c++

不确定我所做的是否是一个糟糕的设计,但我正在尝试执行以下操作:

class c_a
{
public:
    void do_stuff(c_b *b)
    {
        b->move_x();
    }
};

class c_b
{
public:
    void call()
    {
        c_a a;
        a.do_stuff(this);
    }

    void move_x()
    {
        cout << "test";
    }
};

int main()
{
    c_b b;
    b.call();
}

我收到编译器错误语法错误:标识符“c_b”。如何解决这个问题?

最佳答案

每个名称在使用前都应声明。

class c_a
{
public:
    void do_stuff( class c_b *b);
};

class c_b
{
public:
    void call()
    {
        c_a a;
        a.do_stuff(this);
    }

    void move_x()
    {
        cout << "test";
    }
};

void c_a::do_stuff( c_b *b)
{
    b->move_x();
}

int main()
{
    c_b b;
    b.call();
}

关于C++ 奇怪的用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22520695/

相关文章:

c++ - 为什么我不能编译这个开源项目

python - 如何为 std::vector 数据的形状 View 编写 LLDB 合成提供程序

c++ - 将状态枚举的全局更改为函数中的 int 值

c++ - 如何从具有特化的类模板中定义静态成员变量?

c++ - OpenCV 在 eclipse 上运行

c++ - OpenGL 缓冲区的状态如何在程序运行之间保持不变?

STL 中使用的 C++ 自定义比较类型(函数谓词与 less 结构)

c++ - 为什么 'virtual' 对于派生类中的重写方法是可选的?

C++ 类映射对象

c++ - 以下 C/C++ 代码是否调用未定义的行为?