1

私はしばらくこれに取り組んできましたが、それを理解できないようです。以下のエラーがスローされ続けるため、コードをコンパイルできません。基本的に、私がやろうとしているのは、ポインターを使用して基本クラスと派生クラスの両方のオブジェクトを含むベクターを作成することです。

Final Assignment.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall Product::Product(void)" (??0Product@@QAE@XZ) 関数で参照されている "public: __thiscall SaleProduct::SaleProduct(char,class std: :basic_string,class std::allocator >,int,double,double)" (??0SaleProduct@@QAE@DV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@ std@@HNN@Z)
致命的なエラー LNK1120: 1 つの未解決の外部

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

class Product
{


public:

Product();
Product(char iT,string des,int inv,double p,double dis)
{
invType = iT;
description = des;
inventory = inv;
price = p;
discount = dis;
}

char getInvType(){
return invType;
}

protected:
char invType ;
string description;
int inventory;
double price;
double discount;
};

class SaleProduct:public Product {

public:



//SaleProduct();
SaleProduct(char iT,string des,int inv,double p,double dis){


}


};



int main()
{
int choice = 0;
// SaleProduct* SaleProductOB;
// Product *productPoint = &ProductOB;
 vector<Product*> inventoryVec;

  char invType;
  string description;
  int inventory;
  double price;
  double discount = 0;




ifstream inFile("Inventory.txt");

if (inFile.is_open()){

while (inFile >> invType >> description >> inventory >> price >>discount){

      if (invType == 'S'){

           inventoryVec.push_back(new SaleProduct(invType,description,inventory,price,discount)  );
     }else{
    //inventoryVec.push_back(new Product(invType,description,inventory,price,discount)  );

      }

}
}else{
cout << "File is not ready!";
}



cout << inventoryVec.size() << endl;


while (choice != 3) {
        cout << "Please enter your choice:" << endl;
        cout << "1. Print available items"  << endl;
        cout << "2. Add item to cart"       << endl;
        cout << "3. Print receipt and quit" << endl << endl;

        cin >> choice;
 }








//system("PAUSE");
return 0;
}
4

1 に答える 1

2

正しいコンストラクターを指定する必要がある場合があります (そのままでは、実際の定義を持たない既定のコンストラクターを使用しようとしています)。

SaleProduct(char iT,string des,int inv,double p,double dis) : 
   Product(iT, des, inv, p, dis ){
于 2012-05-29T15:55:24.200 に答える