【发布时间】:2017-12-28 18:04:19
【问题描述】:
我刚刚得到了一个代码示例,无法修改:
#include <iostream>
#include "Image.h"
#include "Ppm.h"
int main() {
Image* ob = 0x0;
try
{
ob = new Ppm("lena.ppm");
long kolor = countColors(*ob);
std::cout << "Unikalnych kolorow: " << kolor << '\n';
}
catch (ImageError& e)
{
std::cout << e.what() << std::endl;
}
delete ob;
return 0;
}
我对线感到困惑
long kolor = countColors(*ob);
两个问题: 1)这个函数应该是静态的吗? 2) 它应该在 Image 类中,还是在 Ppm 中,从第一个继承?
【问题讨论】:
-
假设我们并不都知道所有这些类型是什么。你想解释一下吗?
-
1.很可能没有。 2.(很可能)不,因为它前面缺少
blah.或blah->或blah::。 -
诀窍是我不允许向该代码添加任何内容,所以基本上我不能只添加例如。范围运算符:/
-
那么,你应该写什么?函数
countColors可以是静态函数,但不能是Image或Ppm的成员,因为不能这样调用成员函数。 -
是的,我知道我会有内存泄漏,是的,我知道当函数为静态时,我将无法调用成员函数(这只是一种想法)它假设是一个代码,它使用地图返回图像中的许多独特颜色(例如,在 *.ppm 格式中)
标签: c++ image inheritance static