gpt4 book ai didi

C++ "No matching constructor for initialization of"编译器错误

转载 作者:IT老高 更新时间:2023-10-28 22:13:38 26 4
gpt4 key购买 nike

我有一个类,我尝试初始化但收到错误“没有匹配的构造函数用于初始化'TextureCoordinates'”;

我正在尝试初始化的类:

class TextureCoordinates
{
public:
TextureCoordinates(){};
TextureCoordinates(Point2D& origin, Dimensions2D& dim);
Point2D getOrigin() const {return origin;};
Dimensions2D getDim() const {return dim;};
private:
Point2D origin;
Dimensions2D dim;
};

编译器错误:

TextureCoordinates result(point, Dimensions2D(width, height));

构造函数定义:

TextureCoordinates::TextureCoordinates(Point2D& origin, Dimensions2D& dim):
origin(origin), dim(dim) {}

任何想法我做错了什么?

最佳答案

您的构造函数通过非常量引用获取参数,但您将一个临时对象 (Dimensions2D(width, height)) 传递给它。临时对象,即使是非常量对象,也不会绑定(bind)到非常量引用。

解决方案,让你的构造函数接受 const 引用(它不应该修改传递的对象):

TextureCoordinates(Point2D const& origin, Dimensions2D const& dim);

关于C++ "No matching constructor for initialization of"编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8101489/

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