2012-02-19 3 views
0
#include <cstdlib> 
#include <iostream> 
#include <string> 
#include <string.h> 

using namespace std; 

class Portfolio{ 

public : 

Portfolio(){}; 

private: 

Stock stocks[100]; 

void load_self(){} 
void save_self(){} 

}; 


class Stock { 

public: 

Stock(int val , int amo , string db , string symbol){ 

this->set_value(val); 
this->set_amount(amo); 
this->set_date(db); 
this->set_symbol(symbol); 

} 

void set_value(int vlue){this->value=vlue;} 
void set_amount(int am){this->amount=am;} 
void set_date(string d){this->date_bought = d;} 
void set_symbol(string symb){this->symbol = symb;} 

private: 

int value; 
int amount; 
string date_bought; 
string symbol; 

}; 

int main(int argc, char *argv[]) 
{ 

    return EXIT_SUCCESS; 
} 
+0

Что такое сообщение об ошибке? –

ответ

2

У вас есть две проблемы.

  1. Как уже отмечалось, измените порядок деклараций классов, чтобы Фондовый отчет был полностью определен до Портфеля.
  2. Вам нужно определить подходящий конструктор по умолчанию, так что со может быть создан с помощью Stock stocks[100]

Для решения второй вам нужно что-то вроде этого:

class Stock { 

    public: 

     Stock() {}; // Could add suitable defaults here. 

    // Whatever else.... 

} 
2

Вы должны объявить класс Stock первым, еще до объявления Portfolio.

Участник Stock stocks[100]; представляет собой массив объектов Stock, поэтому полная реализация класса должна быть известна до Portfolio, которой это не так. Переместите объявления вокруг, и он должен работать.

+0

За исключением того, что у запаса нет подходящего конструктора, так что он все равно будет терпеть неудачу. – talonmies

+0

Он просто говорит: «Нет соответствующего вызова функции в Stock :: Stock()» – Monkeyanator

+1

@Monkeyanator определяет конструктор по умолчанию. Если вы определяете конструктор для класса, то по умолчанию он не будет сгенерирован. –

1

Класс Stocks должен быть определен доPortfolio один. Или иначе, при использовании он будет не определен.

+0

Он просто говорит: «Нет соответствующего вызова функции в Stock :: Stock()» – Monkeyanator

+0

Ах, это потому, что класс 'Stock' не имеет конструктора по умолчанию. Поэтому вы не можете объявить массив-член такого типа. Вы должны добавить конструктор по умолчанию в 'Stocks'. Или, возможно, подумайте об изменении члена 'stock' в массив указателей или' std :: vector' или что-то подобное. – rodrigo

Смежные вопросы