gpt4 book ai didi

c++ - 将 map 与自定义对象一起使用时出错?可能是语法问题

转载 作者:行者123 更新时间:2023-11-28 07:08:24 25 4
gpt4 key购买 nike

好的,我正在编写代码来修改 .ppm 图像文件。图片被读入并存储在 PPM 类对象中。每个像素都存储在一个 RGB 结构中。最终它会将原始图像中的所有颜色转换为来自小调色板的颜色。它通过使用我创建的距离函数来计算一种颜色与另一种颜色的接近程度。它循环遍历颜色托盘并将它们插入到 map 中,其键是与图像中当前像素的距离。我以某种方式将语法插入 map 时弄乱了语法。有帮助吗?

下面是吐出的巨大错误的一部分

support.cpp: 在成员函数 'void PPM::process1()' 中:support.cpp:144:78: 错误:没有匹配函数来调用 'std::pair::pair(float, RGB&)'

这是错误来源的代码部分。它在我如何使用插入功能。我无法让 RGB 类匹配编译器想要的内容,并且不确定我做错了什么。

编辑:更新 我知道代码目前无法运行。我还没有把它冲掉。我喜欢尝试尽早排除语法错误。

void PPM::process1()
{
// for each pixel {
// find closest qcolor
// set pixel color to closest qcolor
// }
map<float, RGB()> distanceTest;
RGB RGBtemp;
map<float,RGB()>::iterator it;
for(int i = 0; i < img.size(); ++i){
for(int j = 0; j < qcolors.size(); ++j){
RGBtemp = qcolors[j];
distanceTest.insert(pair<float,RGB()>(img[i].distance(qcolors[j]), RGBtemp));
}
it = distanceTest.begin();
distanceTest.clear();
}
}

下面是所有相关的Header代码。

typedef unsigned char uchar;
typedef enum { run_process1, run_process2 } pmode_t;

struct RGB {
// constructor/destructor
RGB(uchar R=0, uchar G=0, uchar B=0);
// operator< overload
float distance(RGB);
uchar R, G, B;
};

class PPM {
public:
PPM();
~PPM();

void read(const string &);
void write(const string &);
void write(const string &, const string &);
void process(pmode_t, const string &);

private:
string magicid;
int nrows, ncols;
int maxvalue;
vector<RGB> img;
vector<RGB> qcolors;

void read_qcolors(const string &);
void process1();
void process2();
};

最佳答案

您的模板参数列表语法不正确。省略你的类型名称后面的括号,你应该没问题:

 map<float, RGB> distanceTest; //no ()

这被称为“最令人烦恼的解析”。

关于c++ - 将 map 与自定义对象一起使用时出错?可能是语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21417244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com