C ++奇怪的用法呢?

时间:2014-03-19 23:55:05

标签: 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();
}

我收到了编译错误syntax error : identifier 'c_b'。如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

应宣布使用前的每个名称。

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();
}