Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
206 views
in Technique[技术] by (71.8m points)

请教一个c++ friend的问题

我想在Triangular_friend中定义函数让它成为Triangular_iterator类的friend, 用以访问Triangular_iterator的私有变量, 所以我的参数是const Triangular_iterator &ti, 但是为了在声明friend函数的时候让Triangular_iterator类知道Triangular_friend这个类的定义, 我只能把friend类放到前面, 这样我就遇到了一个互相矛盾的问题....就是两个class互相需要对方先定义, 请问如何解?

#pragma once


class Triangular_friend {

public:

void print_friend_index(const Triangular_iterator &ti);

void print_index(const Triangular_iterator &ti);

};


class Triangular_iterator {

public:

Triangular_iterator(int index): _index(index - 1) {};

bool operator==(const Triangular_iterator &) const;

bool operator!=(const Triangular_iterator &) const;

int operator*() const; 

Triangular_iterator & operator++();

Triangular_iterator operator++(int);

friend void Triangular_friend::print_friend_index(const Triangular_iterator &ti);

private:

void check_intergrity() const; 

int _index;

};

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

提前声明一下Triangular_iterator

class Triangular_iterator;

class Triangular_friend {
//.........
};

class Triangular_iterator {
//........
};

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...