Ошибка: класс A использует класс B, который определяется

У меня есть проект C++, который я успешно обернул классами .NET с помощью C++/CLI. Я определяю классы-оболочки в файле .h.

В настоящее время я получаю Error C2460: Mixer uses Track, which is being defined.

Как видно из приведенного ниже кода, Mixer использует Track в переменной MainTrack, а Track также использует Mixer в переменной Parent. Как мне связать эти 2 класса друг с другом и успешно скомпилировать?

#ifndef CPP_MIXER_NET_H
#define CPP_MIXER_NET_H


#pragma managed



// Mixer class
public ref class Mixer {
private:
    void Create();
    void Destroy();

public:

    // props
    Track MainTrack;

    Mixer();
    ~Mixer();
    !Mixer();

};


// Track class
public ref class Track {
private:
    void Create(Track^ parent);
    void Destroy();


public:

    // props
    Mixer Parent;
    Track Parent;

    // public constructor
    Track(Track^ parent);
    ~Track();
    !Track();

};



#endif

person Robin Rodricks    schedule 25.03.2013    source источник
comment
Возможно, Mixer^ Parent? И Трек^ Трек. Это или переосмыслить вашего дизайнера.   -  person ta.speot.is    schedule 25.03.2013


Ответы (1)


Просто объявите свои классы в самом верху:

public class Mixer;
public class Track;
person Bartlomiej Lewandowski    schedule 25.03.2013
comment
объявить = объявить вперед - person trojanfoe; 25.03.2013
comment
Пришлось использовать ту же подпись, т.е. public ref class Mixer; - person Robin Rodricks; 26.03.2013