如何修复'unresolved overloaded function type?'

How to fix 'unresolved overloaded function type?'

本文关键字:type function overloaded unresolved 何修复      更新时间:2023-10-16

这个类

class Channel
{
    public:
        Channel(int channelNumber, ChannelType channelType);
};

这是地图

map<int, Channel> m_Channel(int, ChannelType);

为什么尝试像这样添加Channel到地图

m_Channel[channelNumber] = Channel(channelNumber, channelType);

导致编译错误?

错误:无效类型‘<unresolved overloaded function type>[int]’ for数组下标

int似乎是一个完美的数组下标类型。

这一行

map<int, Channel> m_Channel(int, ChannelType);

声明了一个名为m_Channel的函数,它接受一个int和一个ChannelType,并返回一个map<int, Channel>。我假设您希望它是一个成员变量。

map<int, Channel> m_Channel;

见https://en.wikipedia.org/wiki/Most_vexing_parse

map<int, Channel> m_Channel(int, ChannelType);

如果是一个函数声明,它有两个参数intChannelType,返回一个map<int, Channel>

你可能只需要一个像map<int, Channel> m_Channel

这样的映射

需要Channel类的默认构造函数

所以你应该有

class Channel {
public:
    Channel(int channelNumber, ChannelType channelType);
    Channel() {}
};
相关文章: