我試圖將位於_name中的字符數組傳遞給名爲char的引用。通過引用字符數組傳遞
但是,將數組指針傳遞給引用時,它只會顯示第一個字符而不是整個字符串。
我的問題是你將如何創建一個字符引用數組來將原始指針複製到它然後顯示它?如item.cpp中所示,我們將_name指針複製到名稱的引用中,然後返回名稱,但它只顯示字符串的第一個字符。
我只會顯示我的代碼的相關部分。
Item.cpp:
void Item::name(const char * name){
strncpy(_name, name , 20);
}
const char& Item::name() const{
char& name = *_name;
return name;
}
ItemTester.cpp:
的Main():
int main(){
double res, val = 0.0;
fstream F;
SItem Empty;
SItem A("456", "AItem", 200);
SItem B("567", "BItem", 300, false);
//cout << A.name() << endl;
B.quantity(50);
//cout << Empty << endl;
cout << A << endl << B << endl << endl;
cout << "Enter Item info for A: (Enter 123 for sku)" << endl;
cin >> A;
cout << "Copying A in C ----" << endl;
SItem C = A;
cout << C << endl << endl;
cout << "Saving A---------" << endl;
A.save(F);
cout << "Loading B----------" << endl;
B.load(F);
cout << "A: ----------" << endl;
cout << A << endl << endl;
cout << "B: ----------" << endl;
cout << B << endl << endl;
cout << "C=B; op=----------" << endl;
C = B;
cout << C << endl << endl;;
cout << "Operator ==----------" << endl;
cout << "op== is " << ((A == "123") && !(A == "234") ? "OK" : "NOT OK") << endl << endl;
cout << "op+=: A += 20----------" << endl;
A += 20;
cout << A << endl << endl;
cout << "op-=: A -= 10----------" << endl;
A -= 10;
cout << A << endl << endl;
cout << "op+=double: ----------" << endl;
res = val += A;
cout << res << "=" << val << endl << endl;
return 0;
}
ostream的寫
virtual std::ostream& write(std::ostream& os, bool linear)const{
return os << sku() << ": " << name() << endl
<< "Qty: " << quantity() << endl
<< "Cost (price * tax): " << fixed << setprecision(2) << cost();
}
讓我知道如果我錯過了任何重要的細節和il編輯我的文章。
更改getter函數爲char *&給我,ü不能返回_name錯誤。 – petermytt
@petermytt這可能是由於您將此函數設爲const函數的事實。請閱讀我最近編輯的答案。另外:不要忘記更改頭文件(.h)。 – CForPhone