3 (связанные я считаю) ошибки в моей программе на C ++

0

Я получаю следующие ошибки с моим кодом:

Ошибка 3 ошибки LNK1120: 1 нерешенные внешние элементы c:\users\toking\documents\visual studio 2012\Projects\11.9\Debug\11.9.exe 11.9

Ошибка 2 ошибки LNK2001: неразрешенный внешний символ "public: double __thiscall Package :: calculateCost (float, double)" (? CalculateCost @Package @@QAENMN @Z) c:\Users\toking\documents\visual studio 2012\Projects\11.9\11.9\11.9_main.obj 11.9

Ошибка 1 ошибка LNK2019: неразрешенный внешний символ "public: double __thiscall Package :: calculateCost (float, double)" (? CalculateCost @Package @@QAENMN @Z), на который ссылается функция "public": double __thiscall overnightPackage :: calcCostOvernight (float, double, double) "(? calcCostOvernight @overnightPackage @@QAENMNN @Z) c:\Users\toking\documents\visual studio 2012\Projects\11.9\11.9\11.9.obj 11.9

Это мой второй семестр C++, и я впервые использовал наследование. Я попытался вызвать функции аналогично тому, как моя книга называет их, но все ошибки, похоже, связаны с моими производными функциями классов. Любая помощь приветствуется.

//Главный

#include <iostream>
#include "stdafx.h"
#include <string>
using namespace std;

int main()
{
  int i;
  string customerName,customerAddress,city,state,senderAddress,recipientAddress;
  float packageWeight;
  string customerCity;
  double costPerOunce;
  double flatFee;
  double additionalCost;
  string customerState;
  int customerZipcode;
  Package base;
  twoDayPackage twoday;
  overnightPackage overnight;
  cout<<" *****Welcome To The American Package Delievery Services*****"<<endl<<endl;
  cout<<"Please Fill In The Requested Data Follow: "<<endl<<"-----------------------------------------"<<endl<<endl;;
  cout<<"Enter Customer Name "<<endl<<endl;
  cin>>customerName;
  cout<<endl;
  base.setName(customerName);
  cout<<"Enter Customer Address"<<endl<<endl;
  cin>>customerAddress;
  cout<<endl;
  base.setAddress(customerAddress);
  cout<<"Enter Customer City"<<endl<<endl;
  cin>>customerCity;
  cout<<endl;
  base.setCity(customerCity);
  cout<<"Enter Customer State"<<endl<<endl;
  cin>>customerState;
  cout<<endl;
  base.setState(customerState);
  cout<<"Enter Customer ZIP code"<<endl<<endl;
  cin>>customerZipcode;
  cout<<endl;
  base.setZip(customerZipcode);
  cout<<"Enter Weight"<<endl;
  cin>>packageWeight;
  cout<<endl;
  cout<<"Enter Cost Per Ounce"<<endl;
  cin>>costPerOunce;
  cout<<endl;
  cout<<"Please Enter Your Choice From The Menu Below:"<<endl<<endl;
  cout<<" 1- Calculate Base Cost "<<endl<<endl;
  cout<<" 2- Calculate Two Day Cost "<<endl<<endl;
  cout<<" 3- Calculate Over Night Cost"<<endl<<endl;
  cin>>i;
  cout<<endl;
  switch (i)
  {
    case 1 :
            base.calculateCost(packageWeight,costPerOunce);
            break;
    case 2 :
            cout<<"Enter Flat Cost"<<endl<<endl;
            cin >> flatFee;
            twoday.calcShippingCost(packageWeight,costPerOunce,flatFee);
            break;
    case 3 :
            cout<<"Enter The Additional Cost"<<endl<<endl;
            cin >> additionalCost;
            overnight.calcCostOvernight(packageWeight,costPerOunce,additionalCost);
            break;
    default:
            cout << "INVALID CHOICE....Please Enter ur Choice Number From 1-->3 "<<endl;
  }
  cout<<"Enter sender address "<<endl<<endl;
  cin>>senderAddress;
  cout<<endl;
  base.setSender( senderAddress);
  cout<<"Enter ricipent address"<<endl<<endl;
  cin>>recipientAddress;
  cout<<endl;
  base.setRecipient(recipientAddress);
  cout<<"address from:"<< senderAddress<<endl;
  cout<<"To:"<<recipientAddress<<endl;
  system ("pause");
return 0;
}

//Заголовок

#include <iostream>
#include <string>
using namespace std;
class Package // Base Class
{
private:
  string name, city, state, sender, recipient;
  int zip;
  string address;
  float weight;
  double cost;
public:
  void setName(string);
  string getName();
  void setCity(string);
  string getCity();
  void setState(string);
  string getState();
  void setZip(int);
  int getZip();
  void setAddress(string);
  string getAddress();
  void setSender(string);
  string getSender();
  void setRecipient(string);
  string getRecipient();
  double calculateCost(float , double);
};


class twoDayPackage: public Package
{
public:
  double calcShippingCost(float, double, double);
private:
  double flatFee;
};

class overnightPackage: public Package
{
public:
  double calcCostOvernight(float, double, double);
private:
  double overnightCost;
};

//Cpp

#include <iostream>
#include "stdafx.h"
#include <string>
using namespace std;

void Package::setName(string n)
{
  name = n;
}
void Package::setCity(string c)
{
  city = c;
}
void Package::setState(string s)
{
  state = s;
}
void Package::setZip (int zp)
{
  zip = zp;
}
void Package::setAddress(string adr)
{
  address = adr;
}
void Package::setSender(string sen)
{
  sender = sen;
}
void Package::setRecipient(string rec)
{
  recipient = rec;
}
string Package::getName()
{
return name;
}
string Package::getCity()
{
return city;
}
string Package::getState()
{
return state;
}
int Package::getZip()
{
return zip;
}
string Package::getAddress()
{
return address;
}
string Package::getSender()
{
return sender;
}
string Package::getRecipient()
{
return recipient;
}
double calculateCost(float weight,double costPerOunce)
{
  double z;
  z = weight * costPerOunce;
  cout<< "The Base Cost = " <<z << endl<<endl;
return z;
}

double twoDayPackage::calcShippingCost(float weight, double costPerOunce, double flatFee)
{
  double z;
  z = calculateCost(weight,costPerOunce) + flatFee;
  cout << "The TwoDayPackage Cost = " << z << endl;
  return z;
}

double overnightPackage::calcCostOvernight(float weight,double costPerOunce,double additionalCost )
{
  double z;
  z = calculateCost(weight, costPerOunce)+(additionalCost * weight);
  cout<< "The OvernightPackage Cost = " <<z << endl;
  return z;
}
  • 1
    stackoverflow.com/questions/12573816/...
  • 0
    Я провел некоторое исследование перед публикацией этого (я был в этом в течение часа или около того) и нашел ту статью. Если я правильно читаю, это говорит о том, что у меня есть объект, который объявлен, но не используется, или используется, но не объявлен. Я не уверен, в каком случае это происходит, поскольку я не могу найти ни одного из них.
Показать ещё 3 комментария
Теги:
visual-studio

1 ответ

1

Ваш код не может решить, является ли calculateCost функцией-членом Package или нет. Выберите один путь и придерживайтесь его.

  • 0
    Что именно вы имеете в виду, выбирая один путь? Вы хотите поместить функцию в мой заголовок под мой класс? Мне сказали, что определения функций не принадлежат классам.
  • 1
    Вы, кажется, смущены. Давайте начнем с чем - то очень просто - вы хотите calculateCost быть функцией - членом класса Package ? Или вы хотите, чтобы это была бесплатная функция?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню