2013-04-30 138 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會嘗試調用默認的構造函數,而您尚未定義該構造函數。