对c++函数的调用不匹配
No match for call to function C++
我正在尝试编程一个光线追踪器,我不能编译我的程序,因为以下错误:
srcutilRay.cpp:在构造函数'Ray::Ray()'中:srcutilRay.cpp:8:17:错误:没有匹配调用'(Vector3D) (double, double, double)'
0 (0.0, 0.0, 0.0);^ makefile。马克:31:目标射线的配方。o'失败的mingw32-make: ***[雷。0]错误1
这是代码:
//Vector3D.h
#ifndef __VECTOR3D__
#define __VECTOR3D__
class Vector3D{
public:
float x;
float y;
float z;
public:
Vector3D(void);
Vector3D(const float&, const float&, const float&);
Vector3D(const Vector3D& obj);
};
#endif
//Vector3D.cpp
#include <iostream>
#include "Vector3D.h"
using namespace std;
Vector3D::Vector3D(void){
x = 0.0;
y = 0.0;
z = 0.0;
}
Vector3D::Vector3D(const float &p_x, const float &p_y, const float &p_z){
x = p_x;
y = p_y;
z = p_z;
}
Vector3D::Vector3D(const Vector3D& obj){
x = obj.x;
y = obj.y;
z = obj.z;
}
//Ray.h
#ifndef __RAY__
#define __RAY__
#include "Vector3D.h"
class Ray{
public:
Vector3D o;
Vector3D d;
public:
Ray(void);
};
#endif
//Ray.cpp
#include "Ray.h"
Ray::Ray(void){
o(0.0, 0.0, 0.0);
}
我不知道这里出了什么问题,有人能解释一下吗?
到达构造函数体时,所有成员都已经初始化了。这意味着在Ray
构造函数中:
Ray::Ray(void){
o(0.0, 0.0, 0.0);
}
行o(0.0, 0.0, 0.0);
等于o.operator()(0.0, 0.0, 0.0)
。
为成员调用非默认构造函数,需要使用初始化列表:
Ray::Ray() : o(0.0, 0.0, 0.0) {
// note the body of the constructor is now empty
}
相关文章:
- Tbb 库:错误:编写自定义类函数而不是 lambda 表达式时,对函数的调用不匹配
- test1.cpp:9:77:错误:对"(const std::normal_distribution) <double>(std::mt19937&)"的调用不匹配
- 计算一个单词在映射中出现的次数 - 使用 transform() - 调用不匹配
- std::使用内部对象移动 - 与调用不匹配
- 对std::函数对象的调用不匹配,该对象是指向成员函数的指针
- 错误:对'boost::.......'的调用不匹配
- 错误:对"set_union"的调用不匹配
- 与构造函数中对(类)(类型)的调用不匹配
- 对"(std::vector<std::vector<int> >) (int, std::vector<int>)"的调用不匹配
- 声明后初始化对象时"调用不匹配"
- 功能参数与函数调用不匹配
- C++ 与函数调用不匹配
- C++ 错误:对 '(std::string {aka std::basic_string}) (<char>无符号整数、字符)的调用不匹配
- C++错误:对"(RgbImage) (int&, int&)"的调用不匹配
- C++ 错误:对"(std::string) (const char[4])"的调用不匹配
- 与结构sockaddr_in调用不匹配
- 错误:对'(Time) (int, int, int)'的调用不匹配
- 错误消息:与调用"(cv::Rect) (cv::Mat&, cv::P oint_, cv:<int>:P oint, cv::Scalar, int)"的调用不匹配
- 对c++函数的调用不匹配
- const_iterator、find_if和bind2nd:对错误的调用不匹配