我想使指針數組保存該類中的對象的地址,因此當我調用掃描器函數時,它將讀取pcode並搜索對象具有相同的pcode。我宣佈數組錯了嗎?還是我誤解了靜態概念?或者是其他東西 ?指針數組C++
反正我猜必須張貼整個代碼
#include <string>
using namespace std;
class product{
public:
product();
product(long&,string&);
void setCode();
void getCode(long);
void static scanner();
void const printer();
static product *point[3];
static int a;
private:
string pname;
long pcode;
};/*
class PrepackedFood:public product{
public:
PrepackedFood(long&, string&,double);
private:
double uPrice;
};
class FreshFood:public product{
public:
FreshFood(long&,string&,double,double);
private:
double weight;
double pricepk;
};*/
#include "product.h"
#include <iostream>
product::product(){pcode=0;pname="unknown";
point[a]= this;
a++;}
product::product(long& c,string&n){pcode=c;pname=n;
}
//void const product::printer(){cout<<getCode()}
void product::setCode(){ cout<<"enter product name\n ";cin>>pname;
cout<<"enter product code _____\b\b\b\b\b";cout<<"\a";
cin>>pcode;cout<<endl;
cout<<pname<<endl;
cout<<pcode<<endl;
}
void product::getCode(long s){
if ((*this).pcode=s){
printer();
}
}
void product::scanner(){
long a;
cout<<"SCANNING!\a_____\b\b\b\b\b";cin>>a;
int i=0;
while(i<3){
if (point[i]->pcode==a){point[i]->printer();
break;
}
i++;
//(i==3)?cout<<"try again\n":"\a";
}
}
void const product::printer(){
cout<<pname<<endl;
cout<<pcode<<endl;
}
#include "product.h"
int main(){
product a[3];
int i=0;
while(i<3){
a[i].setCode();
i++;
}
product::scanner();
return 0;
}
我知道這是可以做到很多更容易我剛學所以只想修復掃描功能。它不會編譯
1> product.obj:error LNK2001:無法解析的外部符號「public:static class product * * product :: point」(?point @ product @@ 2PAPAV1 @ A) 1> product。 obj:error LNK2001:無法解析的外部符號「public:static int product :: a」(?a @ product @@ 2HA)
老實說,它會更容易上正在做什麼*權*在此代碼註釋,作爲名單要短得多。關於做錯事,從未經檢查的指針取消引用,未初始化的變量,競爭條件,未經檢查的IO,僅舉幾例。 – WhozCraig
我正在學習C++,所以我只是想讓主體儘可能小而易於編寫和複雜。 – meh