不能在另一个类中声明类

时间:2012-02-19 19:06:36

标签: c++ class

#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;
}

3 个答案:

答案 0 :(得分:2)

在声明Stock之前,您需要先声明类Portfolio

成员Stock stocks[100];表示Stock个对象的数组,因此必须知道该类的完整实现,而不是Portfolio。移动声明,它应该工作。

答案 1 :(得分:2)

你有两个问题。

  1. 正如其他人所说,颠倒了类声明的顺序,因此Stock在投资组合之前完全定义。
  2. 您需要定义合适的默认构造函数,以便Stock stocks[100]
  3. 可以实例化Stock

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

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

答案 2 :(得分:1)

Stocks应该在 Portfolio之前定义。否则,使用时将不确定。