C ++头文件输出

时间:2013-07-09 15:18:19

标签: c++ header-files

我正在编译这个头文件。我不明白为什么在void中它不会显示getfunctions的值。从下面的示例标题代码我正确地做到了。

#ifndef STOCK_MARKET_CLASS
#define STOCK_MARKET_CLASS

// system defined preprocessor statement for cin/cout operations
#include <iostream >

// programmer defined preprocessor statement for setreal operation
#include "textlib.h"

// programmer defined preprocessor statement for String
#include "tstring.h"

class StockMarket
{
    private:
    String symbol;      // identifies the company
    double startingPrice;       // starting price of the stock
    double closingPrice;        // closing price of the stock

    public:
    // Constructor initializes the attributes that are the symbol, the starting price of the stock, and         
    // the closing price of the stock.
    StockMarket(String sym, double sPrice, double cPrice);

    // Takes the closing price of the stock and subtracts the starting price of the stock. Returns the 
    // amount of change in the price of the stock. 
    // You might not have any arguments.
    double change(double sPrice, double cPrice);

    // Returns the symbol.
    // You might not have any arguments.
    String getSymbol(String sym);

    // Returns the starting price of the stock.
    // You might not have any arguments.
    double getStartingPrice(double sPrice);

    // Returns the closing price of the stock.
    // You might not have any arguments.
    double getClosingPrice(double cPrice);

    // Outputs the following information that is listed below.
    // Stock Information for IBM:            <=== where IBM is the symbol
    // Starting Price       $XXX.XX
    // Closing Price        $XXX.XX
    //                  -------------
    // Difference           $XXX.XX
    // You might not have any arguments.
    void writeStockInfo();
};

//**********************************************************************
//             StockMarket Class Implementation
//**********************************************************************

// Constructor is passed arguments sym, sPrice, and cPrice
// Implementation of the constructor
StockMarket::StockMarket(String sym, double sPrice, double cPrice)
{
    symbol = sym;
    startingPrice = sPrice;
    closingPrice = cPrice;
}

// Function which takes the closing price of the stock and subtracts the starting price of the stock. Returns the 
// amount of change in the price of the stock. 
// Implementation of the function
// You might not have any arguments.
double StockMarket::change(double cPrice, double sPrice)
{
    return double (cPrice) - double (sPrice);
}

// Function to return the symbol.
// Implementation of the function
// You might not have any arguments.
String StockMarket::getSymbol(String sym)
{
    return sym;
}


// Function to return the starting price of the stock.
// Implementation of the function
// You might not have any arguments.
double StockMarket::getStartingPrice(double sPrice)
{
    return sPrice;
}


// Function to return the closing price of the stock.
// Implementation of the function
// You might not have any arguments.
double StockMarket::getClosingPrice(double cPrice)
{
    return cPrice;
}


// Function that outputs the following information that is listed below.
// Stock Information for IBM:            <=== where IBM is the symbol
// Starting Price       $XXX.XX
// Closing Price        $XXX.XX
//                  -------------
// Difference           $XXX.XX
// Implementation of the function
// You might not have any arguments.
void StockMarket::writeStockInfo()
{
    cout << "Stock Information for"<< setw(4) << getSymbol() << ":" << endl;
}

#endif                                          // STOCK_MARKET_CLASS

给我的例子

// return the player's batting average
double Baseball::getBatAvg ()
{

   if (atbats == 0)
      // average is 0.0 if player has no at bats
      return 0.0;
   else
      // batting average is the number of hits
      // divided by the number of at bats
      return double(hits)/double(atbats);
}

// format and output batting statistics
void Baseball::writeBattingStats()
{
   cout << "Player" << setw(3) << uniformNo
        << "  At bats" << setw(4) << atbats
        << "  Hits" << setw(4) << hits
        << "  Average " << setreal(1,3) << getBatAvg()
        << endl;
}

这是我的cpp代码

#include "stdafx.h"
// system defined header file that declares the input/output operations (cin/cout)
#include <iostream> 
using namespace std;
// system defined header file that declares parametric manipulators
#include <iomanip>
#include "Stock.h"

int main( )
{
    StockMarket IBMStock("IBM", 150.00, 300.00);

    IBMStock.writeStockInfo();


    system("PAUSE");
    return 0;

}

1 个答案:

答案 0 :(得分:0)

get函数(如getSymbol)需要一个String类型的参数。

void StockMarket::writeStockInfo()
{
    cout << "Stock Information for"<< setw(4) << getSymbol() << ":" << endl;
}

您正在调用没有提供参数的getSymbol()。 这就是IBMStock.writeStockInfo()没有显示任何结果的原因。

然而,这忽略了另一个问题。在你的get函数实现中,你只是返回你传入的参数......这没有多大意义。你应该做的是利用'this'指针。

String StockMarket::getSymbol()
{
    return this->symbol;
}

我认为你所追求的是名为Symbol的成员变量字符串,它属于StockMarket对象。

另外,C ++方面的注意事项。最佳实践是分隔标头和实现文件。

修改 为了澄清,您也可以在不使用this指针的情况下访问成员变量

String StockMarket::getSymbol()
{
    return symbol;
}