shzuoxinyu93 2015-12-08 17:26 采纳率: 33.3%
浏览 1367
已采纳

大神能否帮忙改个错哈

程序中"..."不用管它


#include ...
class Task {
public:
    Task(int id) : id_(id) {}
    int getID() { return id_; }
    std::string getName() { return "Task"; }
    virtual bool checkTimeout() { return false; }
private:
    int id_;
};
class UDPTask : public Task {
public:
    UDPTask(int id) : Task(id) {}
    std::string getName() { return "UDPTask"; }
    bool checkTimeout() { ... }
    ...
};
class TCPTask : public Task {
public:
    TCPTask(int id) : Task(id) {}
    std::string getName() { return "TCPTask"; }
    bool checkTimeout() { ... }
    ...
};
class TaskManager {
public:
    void addTask(Task t) {
        task_map_[t.getID()] = t;
    }
    void removeTask(Task t) {
        task_map_.erase(t.getID());
    }
    void checkTimeout() {
        std::map<int, Task>::iterator it = task_map_.begin();
        for (; it != task_map_.end(); ++it) {
            if (it->second.checkTimeout()) {
                printf("%s timeout->remove it", it->second.getName());
                task_map_.erase(it);
            }
        }
    }
private:
    std::map<int, Task> task_map_;
};

  • 写回答

3条回答 默认 最新

  • 普通网友 2015-12-09 02:26
    关注

    其实报错的本质原因是,你的成员函数里面有Task t这样的形参,总之是这样一个成员函数出错了,
    void addTask(Task t) {
    task_map_[t.getID()] = t;
    }
    task_map_[t.getID()]是要调用默认构造的,但你却没有默认构造...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?
  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理