2013-04-30 48 views
0

我意识到这种类型的问题已经被问到,我看了看那些回答,但仍然认为我错过了一些东西。我得到这个“没有匹配的构造函数错误”,因为我没有构造函数,但是据说,我所看到的关于构造函数的所有内容都表示,如果您尚未在类中包含变量名称,则需要它们。但我已经这样做了,所以我需要一个构造函数吗?如果我这样做,那么它应该是什么样子?我是C++的新手,参加一个班级,这是一个任务。“没有用于初始化...的匹配构造函数”

这是我的sensor_node.h文件与类声明:

#ifndef SENSORNODE_H 
#define SENSORNODE_H 

#include <iostream> 

class LOCATION { 
    float lat, longi, height; 

public: 
    LOCATION (float lat, float longi, float height); 
    void setx(float xx); 
    void sety(float yy); 
    void setz(float zz); 
    void print(); 
}; 

class SensorNode { 
    char* NodeName; 
    int NodeID; 
    LOCATION Node1; 
    float batt; 
    int func; 


public: 
    SensorNode(char *n, float x, float y, float z, int i, float ah); 
    void print(); 
    void setOK(int o); 
    int getOK(); 
    void setLOC(float longi, float lat, float h); 
}; 

#endif /* defined(__Project_3__sensor_node__) */ 

这是我的main.cpp中与错误(在上面写着 “位置” 的路线):

#include <iostream> 
using namespace std; 


#include "sensor_node.h" 

int main() { 
    LOCATION a; SensorNode s1("Pulse",15.9,-30.1,0,157,2.0); 
    int hold; 

回答

0

其实,你有一个构造函数:LOCATION (float lat, float longi, float height)。由于它是唯一的一个,C++试图应用它。但是,您没有提供任何参数,因此此构造函数不匹配。

+0

那么这是否意味着我需要另一个构造函数?我的老师做了这一行:LOCATION a; SensorNode s1(“脉冲”,15.9,-30.1,0,157,2.0); 我看到它的参数与构造函数不匹配。但我不太明白。我应该做另一个构造函数吗?或者是调用一个我还没有构建的函数? – Acoustic77 2013-04-30 22:43:46

+0

你可以给出'a'三个参数(例如'LOCATION a(1.2,3.4,5.6);'in),或者你可以在你的类定义中提供一个默认的构造函数LOCATION()。 – Matthias 2013-05-01 04:13:32

+0

哦!得到它了!谢谢马提亚斯! – Acoustic77 2013-05-01 18:18:40

0

你有一个LOCATION(为什么不一致的大写字母顺序?)的构造函数需要三个浮点数,但行LOCATION a会尝试调用默认的构造函数,而您尚未定义该构造函数。

相关问题