1

link.hとchannel.hの2つのファイルがあります。リンクには、タイプとの2つのオブジェクトが含まれてChannelsrcますdst。ファイルは次のとおりです。

// channel.h
class Channel {
private:
    bool marked;
    // ...

public:
    void mark(void) { marked = true; }
    void unmark(void) { marked = false; }
    bool is_marked(void) const { return marked; }
    // ...
};

// link.h
#include "channel.h"
class Channel;

class Link {
private:
    Channel *src, *dst;
public:
    void mark_src(void) { src->mark(); }
    void unmark_src(void) { src->unmark(); }
    bool is_marked_src(void) const { return src->is_marked(); }

    void mark_dst(void) { dst->mark(); }
    void unmark_dst(void) { dst->unmark(); }
    bool is_marked_dst(void) const { return dst->is_marked(); }
};

コンパイラ(VC ++ 2008)はエラーを出します:エラーC2027:未定義のタイプ'チャネル'の使用。これは、コンパイル時にタイプ'Channel'が不明であることを意味しますが、これを回避する方法があるため、ChannelクラスとLinkクラスの両方を同じ.hファイルまたはマークのすべての実装に配置する必要はありません。同じ.cppファイル内のメソッド?

4

0 に答える 0