不能在另一个类中声明类
Cannot Declare Class Within Another 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;
}
您有两个问题。
- 正如其他人所说,颠倒类别声明的顺序,使股票在投资组合之前得到充分定义
- 您需要定义一个合适的默认构造函数,以便Stock可以由
Stock stocks[100]
实例化
要解决第二个问题,你需要这样的东西:
class Stock {
public:
Stock() {}; // Could add suitable defaults here.
// Whatever else....
}
您需要先声明类Stock
,然后再声明Portfolio
。
成员Stock stocks[100];
表示Stock
对象的数组,因此Portfolio
必须知道该类的完整实现,而事实并非如此。移动声明,它应该会起作用。
类Stocks
应在Portfolio
之前定义。否则,它在使用时将是未定义的。
相关文章:
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- C++ 警告:在一个声明中将截断从双精度初始化为浮点数,但在另一个声明中则不初始化
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 在另一个结构中声明内部结构会导致错误:结构使用无效
- 是否可以在引用另一个派生类的派生类中声明复制构造函数?
- 如何将一个变量声明为另一个变量的值
- 使用声明:GCC 和 Clang 的另一个错误?
- 如何在另一个文件的类中声明函数
- GLM如何在不声明内联函数并在另一个(未连接的?)文件中将其定义的函数逃脱
- 为什么我不能在类中另一个函数的声明中使用静态 constexpr 的结果?
- 如何声明另一个类中的枚举
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 如何在C 中另一个类中声明类的构造函数
- 我如何在类上需要另一个构造函数的对象中声明一个对象
- 我可以使用预处理器将一个类型声明替换为另一个类型声明吗?
- 如何创建一个声明来自另一个类的变量的类
- 我可以使用变量模板声明另一个变量模板
- c++声明另一个类类型的数组
- 在此范围内没有声明另一个c++错误