【发布时间】:2017-01-09 12:22:47
【问题描述】:
我目前正在编写一个运动管理软件。 您可以将俱乐部和会员添加到这些俱乐部中,但您也可以将子俱乐部添加到俱乐部本身。
问题:如果我创建一个新社团并添加新成员,则成本计算有效。
俱乐部 1:会员 1、会员 2、会员 3 --> 费用计算正确
如果我现在添加第二个俱乐部,那么该俱乐部的成本计算也是正确的。
俱乐部 2:会员 5,会员 6。--> 费用计算正确
但是,如果我现在将 Club 2 添加为 Club 1 的分支,则计算仍然与没有 Club 2 的分支时相同
俱乐部 1:会员 1、会员 2、会员 3、俱乐部 2 -> 计算不正确。
非常感谢您的帮助。下面是我的代码。
会员.cpp
#include <iostream>
#include <string>
#include "Members.h"
static int memberid = 0;
Members::Members()
{
this->name = "default";
this->id = memberid++;
}
Members::Members(std::string name)
{
this -> name = name;
this->id = memberid++;
}
Members::~Members()
{
}
void Members::setname(std::string newname)
{
this -> name = newname;
}
std::string Members::getName()
{
return this->name;
}
int Members::getID()
{
return this->id;
}
double Members::getIncome()
{
return this->income;
}
void Members::setIncome(double income)
{
this->income = income;
}
double Members::getCosts()
{
return this->costs;
}
void Members::setCosts(double costs)
{
this->costs = costs;
}
double Members::getSurplus()
{
return this->income - this->costs;
}
std::string Members::toString()
{
std::string formated = " Member: " + getName() + "\n Income: " + std::to_string(getIncome()) + "\n Costs: " + std::to_string(getCosts()) + "\n Surplus: " + std::to_string(getSurplus());
return formated;
}
Society.cpp 在 Society.h 中是类 Society : public Members
#include "Society.h"
#include "Membertypes.h"
#include <sstream>
#include <vector>
#include <algorithm>
Society::Society(std::string name, int maximalmembers)
{
setname(name);
setMax(maximalmembers);
Members::setCosts(this->getCosts());
Members::setIncome(this->getIncome());
}
double Society::getIncome()
{
double income=0;
for (int i = 0, n = members.size(); i < n; i++)
{
income += members[i].getIncome();
}
return income;
}
double Society::getCosts()
{
double costs=0;
for (int i = 0, n = members.size(); i < n; i++)
{
costs += members[i].getCosts();
}
return costs;
}
double Society::getSurplus()
{
double surplus=0;
for (int i = 0, n = members.size(); i < n; i++)
{
surplus += members[i].getSurplus();
}
return surplus;
}
void Society::addMember(Members* newMember)
{
if ((int) members.size() < this -> maximalMembers)
{
this ->members.push_back(*newMember);
}
else
{
std::cout << "To many members" << std::endl;
}
}
感谢您的帮助
【问题讨论】:
-
在什么意义上它不起作用?你是如何添加成员的?你能指望什么?你得到了什么?您能否提供一个 较小的 完整示例(即带有主 fn)来演示该问题?
-
这不是调试服务:您发布的内容可能是一个工作示例,但肯定不是最小的。请提供MCVE。
-
它不是用来调试程序正在工作的。但是,如果我添加一个俱乐部,什么不起作用。社会测试->新社会;然后添加一些成员,成本计算是正确的。但是,如果我创建一个新社团,然后将其作为子分支添加到社团中,则只会为其他成员计算成本,而不会为刚刚包含的社团计算成本,从而导致错误的结果。俱乐部 1:成员:Franz、John、Mark -> 计算正确。俱乐部 2:成员:Jakob -> 计算正确。俱乐部 1:成员:弗朗茨、约翰、马克、俱乐部 2 --> 计算不再正确
-
@MatthiasKPrime:提供a MCVE 否则没人会理会你的问题。对不起,如果这看起来很苛刻,但这就是事实
-
我尝试将其更改为一个非常紧凑的问题。希望现在更清楚