2016-11-06 13 views
0

最初に、このフォーマットに慣れようと申し訳なく思っていますが、これに慣れようとしていますが、ここには質問があります。私は文字列の束であるクラスEndPointと、2つのEndPointと2つのdouble型のPackageというクラスを持っています。これらの2つを使用する.cppファイルは、次のコード行で行います。文字列クラスへのクラスC++

EndPoint homer{"Homer Simpson", "742 Evergreen Terrace", "Springfield", 
"FL", "32401"}; 

EndPoint donald{"Donald Duck", "1313 Webfoot Walk", "Duckburg", 
    "CA", "95501"}; 
EndPoint kermit{"Kermit Frog", "On the Swamp", "Leland", "MS", "38756"}; 
Package regular{ homer, donald, 25.0, 0.20}; 

これらのメッシュを作成するにはどうすればよいですか。私が抱えている主なエラーは、EndPointをPackageの文字列にクラスとして読み込むことができないことです。私は何が間違っているかを理解するために得ることができる助けに本当に感謝します。

Package.cpp

#include "Package.h" 
#include <iomanip> 
#include <stdexcept> 
#include <sstream> 
#include <string> 
using namespace std; 

Package::Package(EndPoint Sender, EndPoint Reciever, double rate, double weight) { 
    EndPoint SenderName = Sender; 
    EndPoint RecieverName = Reciever; 
    Rate = rate; 
    Weight = weight;  
    setWeight(weight); 
    setRate(rate); 


} 
EndPoint:: EndPoint(const std::string&Endname, const std::string&EndAddress, const std::string&EndCity, const std::string&EndState, const std :: string&endzip) 
{ 
    EndName = Endname; 
    EndAddress1 = EndAddress; 
    EndCity1 = EndCity; 
    EndState1 = EndState; 
    ZipCode1 = endzip; 

}; 

void Package::setSender(std::string Sender) { 
    SenderName = Sender; 
} 
string Package::getSender() { return SenderName; } 
void Package::setReciever(Reciever) { 
    RecieverName = Reciever; 
} 
string Package::getRecieverName() const { return RecieverName; } 


void Package::setWeight(double weight) { 
    if (weight < 0.0) { 
     throw invalid_argument("Weight must be >= 0.0"); 
    } 

    Weight = weight; 
} 
double Package::getWeight() const { return Weight; } 

void Package::setRate(double rate) { 
    if (rate <= 0.0 || rate >= 1.0) { 
     throw invalid_argument("Rate must be > 0.0 and < 1.0"); 
    } 


    Rate = rate; 
} 
double Package::getRate() const { return Rate; } 
double Package::calculateCost() const { 
    return Weight * Rate; 
} 
string Package::toString() const { 
    ostringstream regular; 
    regular << fixed << setprecision(2); // two digits of precision 
    regular << "Sender Name: " << SenderName 
     << "\n Reciever Name: " << RecieverName 
     << "\n Rate: " << Rate 
     << "\n Weight: " << Weight; 
    return regular.str(); 
} 


void EndPoint::setEndName(const string& Endname) { 
    EndName = Endname; 
} 
string EndPoint::getEndName() const { return EndName; } 
void EndPoint::setEndAddress(const string& EndAddress) { 
    EndAddress1 = EndAddress; 
} 
string EndPoint::getEndAddress() const { return EndAddress1; } 
string EndPoint::getCity() const { return EndCity1; } 
void EndPoint::setCity(const string& EndCity) { 
    EndCity1 = EndCity; 
} 
string EndPoint::getState() const { return EndState1; } 
void EndPoint::setState(const string& EndState) { 
    EndState1 = EndState; 
} 
string EndPoint::getZipCode() const { return ZipCode1; } 
void EndPoint::setZipCode(const string& ZipCode) { 
    ZipCode1 = ZipCode; 
} 

Package.H

#ifndef PACKAGE_H 
#define PACKAGE_H 
#include<string> 


class Package { 
public: 
     Package(EndPoint, EndPoint, double = 0.0, double = 0.0); 

     void setSender(EndPoint); 
     std::string getSender() const; 
     void setReciever(EndPoint); 
     std::string getRecieverN() const; 
     void setRate(double); 
     double getRate() const; 
     void setWeight(double); 
     double getWeight() const; 




    EndPoint SenderName; 
    EndPoint RecieverName; 
    double Rate; 
    double Weight; 
    double calculateCost() const; // calculate earnings 
    std::string toString() const; 
}; 
class EndPoint { 
public: 
    EndPoint(const std::string&, const std::string&, const std::string&, const std::string&, const std::string&); 

    void setEndName(const std::string&); 
    std::string getEndName() const; 
    void setEndAddress(const std::string&); 
    std::string getEndAddress() const; 
    void setCity(const std::string&); 
    std::string getCity() const; 
    void setState(const std::string&); 
    std::string getState() const; 
    void setZipCode(const std::string&); 
    std::string getZipCode() const; 
protected: 
    std::string EndName; 
    std::string EndAddress1; 
    std::string EndCity1; 
    std::string EndState1; 
    std::string ZipCode1; 
    std::string toString() const; 

}; 
#endif 
+0

た場合これはコンパイラエラーです。質問にコンパイラが返す正確なエラーが含まれています。 – MrEricSir

+0

エンドポイントクラスのインクルードがパッケージヘッダーに含まれていないようです –

+0

パッケージクラスのすぐ上にあります。 – Sandwichy

答えて

0

PackageEndPointを知っておく必要があるので、あなたはpackage.hPackageクラスの前に定義されたEndPointクラスを持っている必要があります。..

+0

さて、これが行われました。主なエラーは次の行です: パッケージregular {homer、donald、25.0、0.20}; 今すぐもっと良い言葉がないために最初の2つの "もの"は、クラスエンドポイントであるはずです。これらの "物事"はもはや文字列ではなく、EndPointsなので、コンストラクタの編集は何度もエラーを引き起こします。 – Sandwichy

+0

@Sandwichyエラーには何が表示されますか? – HazemGomaa

+0

この行の 'イニシャライザリスト'から 'パッケージ'に変換することはできません。 通常のパッケージ{homer、donald、25.0、0.20}; – Sandwichy

関連する問題