C :没有对象,无法调用成员功能
c++ : cannot call member function without object
我试图编写一个带有地图的类,以使注册表保持具有唯一ID的注册表,以供以后访问对象。所有这些都很好地编译了,直到我编写了主要的循环,试图访问班级的对象及其数据。我不知所措。我声明了所有静态,但行不通。我已经尝试了几个小时,但无法解决。我知道问题在地图上是对我来说是新事物的,但是我似乎找不到问题。希望有人在我的代码中看到问题。
#include <iostream>
#include <map>
#include <cassert>
#include <string>
#include <algorithm>
using namespace std;
class vertegenwoordiger{
public:
vertegenwoordiger(int id, string x, int y): ID(id), name(x),aantalpc(y) {
addtoregistry(this);
cout << "Vertegenwoordiger " << x << " is aangemaakt met " << y << " aantal verkochte pc's " << endl;
gemiddeldeverkoop = (gemiddeldeverkoop + y) / id;
}
static map<int, vertegenwoordiger*>registryMap; // PROBLEM HERE I GUESS
static void addtoregistry(vertegenwoordiger* object){
registryMap[object->ID] = object;
}
static void removefromregistry(vertegenwoordiger* object){
registryMap.erase(object->ID);
}
static vertegenwoordiger* findbymap(int id){
return registryMap[id];
} // MAYBE THIS FUNCTION IS NOT CORRECT ASWELL????
void commissionfixed (vertegenwoordiger* obj){
commissievast = obj->aantalpc*winstperpc;
}
void commissionextra (vertegenwoordiger*obj){
if (obj->aantalpc>gemiddeldeverkoop){
commissieplus = (obj->aantalpc - gemiddeldeverkoop) * 37;
}
}
static const int winstperpc;
static int gemiddeldeverkoop;
const int ID;
protected:
string name;
int aantalpc;
int commissievast;
int commissieplus;
};
const int vertegenwoordiger::winstperpc = 150;
int vertegenwoordiger::gemiddeldeverkoop = 0;
int main()
{
for (int i=0; i<4; i++){
string naam;
int pc;
cout << "geef naam in :";
cin >> naam;
cout << "geef aantal pc op :";
cin >> pc;
vertegenwoordiger* test = new vertegenwoordiger (i+1,naam,pc);
cout << "volgende aub : " << endl;
}
for (int i=1; i<4 ; i++){
vertegenwoordiger* val = vertegenwoordiger::findbymap(i); // I GUESS THE PROBLEM IS RELATED TO THIS LINE
vertegenwoordiger::commissionfixed (val);
vertegenwoordiger::commissionextra (val);
}
return 0;
}
#include <iostream>
#include <map>
#include <cassert>
#include <string>
#include <algorithm>
using namespace std;
class vertegenwoordiger{
public:
vertegenwoordiger(int id, string x, int y): ID(id), name(x),aantalpc(y){
addtoregistry(this);
cout << "Vertegenwoordiger " << x << " is aangemaakt met " << y << " aantal verkochte pc's " << endl;
gemiddeldeverkoop = (gemiddeldeverkoop + y) / id; }
static map<int, vertegenwoordiger*>registryMap;
static void addtoregistry(vertegenwoordiger* object){ registryMap[object->ID] = object; }
static void removefromregistry(vertegenwoordiger* object){ registryMap.erase(object->ID); }
static vertegenwoordiger* findbymap(int id){ return registryMap[id]; }
void commissionfixed (){
commissievast = this->aantalpc*winstperpc; }
void commissionextra (){
if (this->aantalpc>gemiddeldeverkoop){ commissieplus = (this->aantalpc - gemiddeldeverkoop) * 37; } }
void readCommission(){
cout << "comission payment is " << this->commissievast << endl;
}
static const int winstperpc;
static int gemiddeldeverkoop;
const int ID;
string name;
protected:
int aantalpc;
int commissievast;
int commissieplus;
};
map<int, vertegenwoordiger*>vertegenwoordiger::registryMap;
const int vertegenwoordiger::winstperpc = 150; int vertegenwoordiger::gemiddeldeverkoop = 0;
int main() {
for (int i=0; i<2; i++){ string naam; int pc; cout << "geef naam in :";
cin >> naam;
cout << "geef aantal pc op :";
cin >> pc;
vertegenwoordiger* test = new vertegenwoordiger (i+1,naam,pc);
cout << "next please : " << endl; }
for (int i=1; i<3 ; i++){
vertegenwoordiger* val = vertegenwoordiger::findbymap(i);
val->commissionfixed ();
val->commissionextra ();
val->readCommission ();
}
return 0; }
相关文章:
- 无法调用成员函数,尝试正确执行此操作仍然失败
- 在 transform() 中调用成员函数
- C++::在构造函数退出之前通过指针调用成员函数
- 为什么我可以通过野生指针调用成员函数
- 从 Qt 中的信号调用成员函数的问题
- 调用C++成员函数指针,而不知道哪个类
- 如何从嵌套在命名空间中的类调用成员函数?
- 无法在非成员函数中调用成员函数
- 为什么分配了 nullptr 的指针可以调用成员函数?
- 通过带有成员函数指针的 QHash 调用成员函数的正确方法
- 使用可变参数模板调用成员函数
- 调用成员对象的构造函数
- 有没有办法在没有括号的情况下在C++中调用成员的getter/setter?
- 如何调用成员初始化器列表中参考成员的构造函数
- 使用按引用调用时,不能在没有对象的情况下调用成员函数 const
- 如果绝对没有调用成员函数,是否允许使用不完整类型的向量?如果是这样,从什么时候开始
- 在另一个成员函数中调用成员函数时'int'之前的预期主表达式
- 为什么调用成员函数不调用该对象的 ODR-USE?
- 如何在模板参数中调用成员
- 是否可以使用 EXPECT_CALL 来验证模拟对象的构造函数是否在某些时候调用成员函数?