Компилирование класса - PullRequest
       4

Компилирование класса

0 голосов
/ 15 февраля 2012

Продолжайте получать эти ошибки, пытаясь скомпилировать программу класса c ++.

testStock.cpp: В функции 'int main ()': testStock.cpp: 8: error: 'Stock' былне объявлено в этой области testStock.cpp: 8: ошибка: ожидается ;' before ‘first’ testStock.cpp:9: error: ‘first’ was not declared in this scope testStock.cpp:12: error: expected; 'до 'second' testStock.cpp: 13: ошибка: 'second' не был объявлен в этой области

stock.h

#ifndef STOCK_H
#define STOCK_H
using namespace std;

class Stock
{
 private:
  string symbol;
  string name;
  double previousClosingPrice;
  double currentPrice;
 public:
  Stock(string symbol, string name);
  string getSymbol() const;
  string getName() const;
  double getPreviousClosingPrice() const;
  double getCurrentPrice() const;
  double changePercent();
  void setPreviousClosingPrice(double);
  void setCurrentPrice(double);
};

#endif

stock.cpp

#include <string>
#include "stock.h"

Stock::Stock(string symbol, string name)
{
  this->symbol = symbol;
  this->name = name;
}

string Stock::getSymbol() const
{
  return symbol;
}

string Stock::getName() const
{
  return name;
}

void Stock::setPreviousClosingPrice(double closing)
{
  previousClosingPrice = closing;
}

void Stock::setCurrentPrice(double current)
{
  currentPrice = current;
}

double Stock::getPreviousClosingPrice() const
{
  return previousClosingPrice;
}

double Stock::getCurrentPrice() const
{
  return currentPrice;
}

double Stock::changePercent() 
{
  return ((currentPrice - previousClosingPrice)/previousClosingPrice) * 100;
}

testStock.cpp

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

int main()
{
  Stock first("aapl", "apple");
  cout << "The stock symbol is " << first.getSymbol() << " and the name is " << first.getName() << endl;
  first.setPreviousClosingPrice(130.0);
  first.setCurrentPrice(145.0);
  Stock second("msft", "microsoft");
  second.setPreviousClosingPrice(30.0);
  second.setCurrentPrice(33.0);
  first.changPercent();
  second.changePercent();
  cout << "The change in percent for " << first.getName << " is " << first.changePercent() << endl;
  cout << "The change in percent for " << second.getName << " " << second.getSymbol() << " is " << second.changePercent() << endl;

  return 0;
}

Я уверен, что это нечто очевидное, но это только моя программа второго класса.

Ответы [ 4 ]

3 голосов
/ 15 февраля 2012

Похоже, вы пропустили

#include "stock.h"

из вашего testStock.cpp.

2 голосов
/ 15 февраля 2012

Компилятор сообщает вам "‘ Stock ’не был объявлен в этой области" . Поэтому вы должны спросить себя «Где объявлен« Акция »?» , и вы сможете ответить на него: «Он объявлен в stock.h» .

И «Почему компилятор не знает, что« Stock »объявлен в stock.h Поскольку вы его не включили. Итак, как уже упоминалось здесь, #include "stock.h" является решением.

Надеюсь, вы потратите больше времени на чтение ошибок / предупреждений компиляторов, а также больше времени, пытаясь их понять;)

1 голос
/ 15 февраля 2012

Вы просто не включаете "stock.h" в свой основной файл, поэтому компилятор не знает, что означает Stock first.

0 голосов
/ 15 февраля 2012
#include "stock.h"

и вы сможете создать Stock объект, так как он будет виден вашему TestStock классу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...