这是一个PNG类,在类文档中列出了两个构造函数。
PNG::PNG ( string const & file_name )
Creates a PNG image by reading a file in from disk.
Parameters
file_name Name of the file to be read in to the image.
PNG::PNG ( size_t width, size_t height )
Creates a default PNG image of the desired dimensions (that is, a width x height opaque white image).
Parameters
width Width of the new image.
height Height of the new image.
我使用以下命令来调用构造函数:
int main(){
PNG in_image=new PNG("in.png");
size_t width=in_image.width();
size_t height=in_image.height();
PNG out_image=new PNG(width,height);
}
但是下面有错误:
main.cpp:5:6: error: no viable conversion from 'PNG *' to 'PNG'
PNG in_image=new PNG("in.png");
^ ~~~~~~~~~~~~~~~~~
./png.h:62:9: note: candidate constructor not viable: no known conversion from
'PNG *' to 'const PNG &' for 1st argument; dereference the argument with *
PNG(PNG const & other);
^
./png.h:55:9: note: candidate constructor not viable: no known conversion from
'PNG *' to 'const string &' (aka 'const basic_string<char,
char_traits<char>, allocator<char> > &') for 1st argument
PNG(string const & file_name);
^
main.cpp:8:6: error: no viable conversion from 'PNG *' to 'PNG'
PNG out_image=new PNG(width,height);
^ ~~~~~~~~~~~~~~~~~~~~~
./png.h:62:9: note: candidate constructor not viable: no known conversion from
'PNG *' to 'const PNG &' for 1st argument; dereference the argument with *
PNG(PNG const & other);
^
./png.h:55:9: note: candidate constructor not viable: no known conversion from
'PNG *' to 'const string &' (aka 'const basic_string<char,
char_traits<char>, allocator<char> > &') for 1st argument
PNG(string const & file_name);
有人可以提一下我的构造函数调用有什么问题吗? THX
答案 0 :(得分:1)
你应该这样写:
PNG*
使用new应该会得到$scope.allBrands = function(){
var brands = [];
return BrandService.get().then(function(data) {
angular.forEach(data, function(value, key) {
return brands.push(value.name);
});
return brands;
});
};
console.log($scope.allBrands());
,即指向对象的指针。
答案 1 :(得分:1)
你应该这样写:
PNG in_image("in.png");
size_t width = in_image.width();
size_t height = in_image.height();
PNG out_image(width, height);
C ++不是Java - 您可以使用new
动态分配对象,但是当您不这样做时,不要使用它。除非您确实需要,否则不应使用new
。
答案 2 :(得分:0)
类型为X
的operator new将为X
分配内存并返回X*
类型的地址。
所以你应该在指针变量中收集它:
PNG* in_image = new PNG("in.png"); // in_image points to the newly created PNG object
size_t width = in_image.width();
size_t height = in_image.height();
PNG* out_image = new PNG(width,height); // another object is created and out_image points to it