不能在另一个类中声明类

Cannot Declare Class Within Another Class

本文关键字:声明 另一个 不能      更新时间:2023-10-16
#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;
}

您有两个问题。

  1. 正如其他人所说,颠倒类别声明的顺序,使股票在投资组合之前得到充分定义
  2. 您需要定义一个合适的默认构造函数,以便Stock可以由Stock stocks[100]实例化

要解决第二个问题,你需要这样的东西:

class Stock { 
    public: 
        Stock() {}; // Could add suitable defaults here.
    // Whatever else....
}

您需要先声明类Stock,然后再声明Portfolio

成员Stock stocks[100];表示Stock对象的数组,因此Portfolio必须知道该类的完整实现,而事实并非如此。移动声明,它应该会起作用。

Stocks应在Portfolio之前定义。否则,它在使用时将是未定义的。