c ++: нет экземпляра перегруженной функции? - PullRequest
0 голосов
/ 29 апреля 2011
// stock.h

#ifndef STOCK_H
#define STOCK_H

// declare Stock Class
class Stock
{
private:
    string StockExchange;
    string Symbol;
    string Company;
    double Price;
    int Shares;
public:
    Stock();
    Stock(string stockExchange, string symbol, string company, double price, int shares);
    void displayStockInfo();
    void setStockInfo(string stockExchange, string symbol, string company, double price, int shares);
    double getValue();
    bool operator < (Stock & aStock);
    bool Stock::operator > (Stock & aStock);
};

#endif

[пауза]

//main.cpp

#include <string>
#include <iostream>
#include <iomanip>
#include <fstream>

#include "stock.h"

using std::string;
using std::endl;
using std::cout;
using std::setw;
using std::ifstream;


// *******************************
// Stock class

Stock::Stock() {
    StockExchange = "";
    Symbol = "";
    Company = "";
    Price = 0.0;
    Shares = 0;
}

Stock::Stock(string stockExchange, string symbol, string company, double price, int shares) {
    StockExchange = stockExchange;
    Symbol = symbol;
    Company = company;
    Price = price;
    Shares = shares;
}


// end Stock class
// *******************************

...

Моя ошибка говорит о чем-то вроде «нет экземпляра перегруженной функции Stock :: Stock (строка stockExchange, символ строки, строковая компания, двойная цена, целевые акции)».

Что я делаю не так? Я вижу это в моем заголовочном файле.

1 Ответ

2 голосов
/ 29 апреля 2011

Вы не включили заголовочный файл <string> в заголовочный файл stock.h, даже если вы используете std::string в нем.Возможно, это и является причиной этого сообщения об ошибке (если это так, то я бы сказал, что это действительно плохое сообщение).

Другая проблема заключается в том, что в Stock определении класса вы написали следующее:

bool Stock::operator > (Stock & aStock);

что не так.Удалите Stock:: из него и сделайте так:

bool operator > (const Stock & aStock);
               //^^^^ add this also (better)

Stock:: требуется при определении функции вне класса.

...