我遇到了有关班级的问题。我的目标是用某些具有不同特征的个体来模拟某些人群。关于范围,我有这样的东西:
-individual.h->包含一个称为“个人”的类:
class Individual
{
public:
//some characteristics, I will use random values here
double a = 14.0;
double b = 6.0;
}
-population.h->包含一个称为“人口”的类:
class Population
{
public:
std::vector<Individual> populationVector;
}
我要做的是使用这样的方法创建一个包含一定数量的班级个体的种群向量。
vector<Individual> populationVector( 100, Individual() );
当我在populationVector
中调用main.cpp
时,编译器不会给出错误。当我连续尝试使用一个简单的循环将矢量内容读出到屏幕上时,它会给出一个
操作数错误
(是的,我在每个文件中都包含了相关的库)。
编辑:循环
for(int i = 0; i < populationVector.size(); i++)
std::cout << populationVector[i] << "\n";
答案 0 :(得分:1)
populationVector[i]
返回类型为Individual
的对象。您没有为operator<<
定义重载。这就是为什么
std::cout << populationVector[i] << "\n";
编译器不知道如何将类的对象打印到控制台。您必须实现类似
的功能std::ostream &ostream(std::ostream &os, const Individual& inv) {
return os << inv.a << " " << inv.b << "\n";
}
答案 1 :(得分:0)
您不能“呼叫您的人口向量”。您必须创建Population
的对象,然后访问其成员。
#include "Population.h"
int main()
{
Population pop;
pop.populationVector.insert(pop.populationVector.begin(), 100, Individual() );
}
但是通常您不希望将内部成员暴露给调用代码。
因此,populationVector
应该是私有的或受保护的,而Population
应该提供与个人无动于衷的功能。