假设我在与in.png
相同的目录中获得了一个名为main.cpp
的图像。我必须阅读该图像并将其放入我在b
正文中创建的main
。我有一个class PNG
和读取图像的功能。我也在下面发布了我的算法,我上次使用C编程语言3年前,现在是C ++,我已经忘记了很多。为什么我的算法没有用,有什么不对
在png.h;
class PNG
{
public:
PNG(string const & file_name);
/**
* Copy constructor: creates a new PNG image that is a copy of
* another.
* @param other PNG to be copied.
*/
};
在png.cpp中,我们有;
PNG::PNG(string const & file_name)
{
_pixels = NULL;
_read_file(file_name);
}
在main.cpp中,这是我的代码;
int main
{
PNG a;
PNG*b = NULL;
b = a.PNG(string const & in.png);
if(*b = NULL)
cout << "The image wasn't read" << endl;
return 0;
}
感谢
EDIT ---------------------------------------------- --------
你好R Sahu先生, 所以,我希望能够旋转这个图像。所以,我创建了另一个名为&#34; b&#34;的对象,我希望我能从&#34; a&#34;中获得旋转数据。并把它放在&#34; b&#34;。我决定使用在PNG中声明的函数,但它被声明为&#34;类&#34;一个像素,就像PNG是一类图像。但我使用它时出错,我的代码出了什么问题。使用&#34; //&#34;的代码是我以前尝试过但没有工作的东西。
代码有多个文件;
在PNG.h中,我们现在将函数定义为;#include <iostream>
#include "rgbapixel.h"
class PNG
{
public:
RGBAPixel * operator()(size_t x, size_t y);
/**
* Const pixel access operator. Const version of the previous
* operator(). Does not allow the image to be changed via the
* pointer.
* @param x X-coordinate for the pixel pointer to be grabbed from.
* @param y Y-cooridnate for the pixel pointer to be grabbed from.
* @return A pointer to the pixel at the given coordinates (can't
* change the pixel through this pointer).
*/
size_t width() const; // returns width
size_t width() const;
private:
// storage
size_t _width;
size_t _height;
RGBAPixel * _pixels;
};
这些功能是在png.cpp中为我们实现的。所以,在main.cpp中,我有我的代码来使用它们;
#include <algorithm>
#include <iostream>
#include "rgbapixel.h"
#include "png.h"
using namespace std;
int main()
{
cout << "me..........." << endl;
PNG a("in.png");
PNG b;
for(size_t i = 0; i < a.width(); i++)
{
for(size_t j = 0; j <a.height(); j++)
{
// *b(i, j) = *a(j, i); erata
// b(i,j) = RGBAPixel * operator()(size_t x, size_t y);
// b(i, j) = operator()(i, j);
//b(i,j) = *operator(i,j);
//b(j,i) = a*operator(i,j);
//b(j,i) = a.operator(i,j);
//b(j, i) = a.*operator(i,j);
}
}
b.writeToFile("output.png");
return 0;
}
我在使用该功能时遇到错误,我无法说出错误。所以,我不知道我的算法是否会使图像旋转
一些错误;
[jonathan2@linux-a1 lab_intro]$ make
clang++ -std=c++1y -stdlib=libc++ -c -g -O0 -Wall -Wextra -pedantic main.cpp
main.cpp:24:29: error: expected ')'
b(i,j) = *operator(i,j);
^
main.cpp:24:28: note: to match this '('
b(i,j) = *operator(i,j);
^
main.cpp:24:20: error: use of undeclared 'operator()'
b(i,j) = *operator(i,j);
^
2 errors generated.
make: *** [main.o] Error 1
由于
答案 0 :(得分:1)
只需使用:
int main()
{
// Construct a PNG object by passing the name
// of the png file to the constructor.
PNG a("in.png");
return 0;
}