| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1911 人关注过本帖
标题:求教 c++ primer 第13章的程序的问题
只看楼主 加入收藏
qq826647235
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2016-5-4
结帖率:63.64%
收藏
已结贴  问题点数:10 回复次数:4 
求教 c++ primer 第13章的程序的问题
求教 c++ primer 第13章的程序的问题

我定义了两个类,一个叫Folder ,一个叫Message。
然后Message类的头文件里包含了Folder头文件。
但是我在message中用folder为什么就是错误   

程序代码:
void Message::save(Folder &a)
{
    a.addMsg(this);
    folder.insert(&a); 
}


类外定义,内类声明过了。结果
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: message folder 
2017-03-25 16:17
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
大小写咋不一致呢

DO IT YOURSELF !
2017-03-25 20:47
qq826647235
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2016-5-4
收藏
得分:0 
回复 2楼 wp231957
额。Folder是一个类,folder是Message的一个成员变量
2017-03-25 22:08
qq826647235
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2016-5-4
收藏
得分:0 
完整程序在这里
这是Folder
程序代码:
#ifndef FOLDER_H
#define FOLDER_H

#include<set>
#include"Message.h"

class Folder{
        
public:
    void addMsg(Message *);
    void remMsg(Message *);
private:
    std::set<Message*> message;

};

void Folder::addMsg(Message *a)
{
    message.insert(a);
}

void Folder::remMsg(Message *a)
{
    message.erase(a);
}

#endif


Message.h
程序代码:
#ifndef MESSAGE_H
#define MESSAGE_H

#include<string>
#include<set>
#include"Folder.h"


using std::string;

class Message{
public:
    Message() = default;
    Message(string a) :content(a) { };
    Message(const Message&);
    Message& operator=(const Message&);
    ~Message();
    void swap(Message&, Message&);
    void save(Folder&);
    void remove(Folder&);
    void add_to_folder(const Message&);
    void rem_to_folder();
private:
    string content;
    std::set<Folder*> folder;
    
};

Message::Message(const Message& a)
{
    content = a.content;
    folder = a.folder;
    add_to_folder(a);
}

Message& Message::operator = (const Message& a)
{
    rem_to_folder();
    content = a.content;
    folder = a.folder;
    add_to_folder(a);
    return *this;
}

void Message::add_to_folder(const Message& a)
{
    for (auto use : a.folder)
    {
        use->addMsg(this);
    }
}

void Message::rem_to_folder()
{
    for (auto use : folder)
    {
        use->remMsg(this);
    }
}

Message::~Message()
{
    rem_to_folder();
}

void Message::swap(Message &a, Message &b)
{
    Message mid;

    
}

void Message::save(Folder &a)
{
    a.addMsg(this);
    folder.insert(&a); 
}

void Message::remove(Folder &a)
{
    a.remMsg(this);
    folder.erase(&a);
}

#endif


2017-03-25 22:09
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
第一段代码不会就是Folder.h吧?哪有这样循环包含的道理。
2017-03-26 22:51
快速回复:求教 c++ primer 第13章的程序的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022055 second(s), 12 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved