簡體   English   中英

有什么方法可以調用 class 成員函數嗎?

[英]Is there any method to call class member functions?

有什么方法可以調用顯示 function 的采購 class。

#include <iostream>
#include<stdio.h>
#include<string>
using namespace std;
class Purchase
{
private:
string userName;
int countOfItems;  
float amount;
float static totalAmt;
int static totalCountOfItems;

public:

void display(Purchase obj[],int n)
{
    for(int i=0;i<n;i++)
    {
        setTotalAmt(obj[i].getTotalAmt()+obj[i].getAmount());
        setCountOfItems(obj[i].getCountOfItems()+obj[i].getCountOfItems());
    }
    cout<<"Total Amount Received :"<<getTotalAmount();
    cout<<"Total Number of Items sold :"<<getTotalCountOfItems();
}
};

getter 和 setter 已經是成員函數。

我如何在主 function 中調用顯示 function 我的主 function 看起來像這樣:

#include <iostream>
#include<string>
#include<stdio.h>
#include "Purchase.cpp"
using namespace std;
int main()
{
    int n;
    string userName;
    int countOfItems;  
    float amount;
    cout<<"Enter the Number of customers :";
    cin>>n;
    Purchase P[n];
    for(int i=0;i<n;i++)
    {
        cin.ignore();
        cout<<"Enter the Name of the customer :";
        getline(cin,userName);
        P[i].setUserName(userName);
        cout<<"Enter the No of Items purchased :";
        cin>>countOfItems;
        P[i].setCountOfItems(countOfItems);
        cout<<"Enter the purchase amount :";
        cin>>amount;
        P[i].setAmount(amount);
    }
    cout<<"Purchase Details :";
    for(int i=0;i<n;i++)
    {
        cout<<"Customer "<<i+1<<" :"<<P[i].getUserName()<<endl;
        cout<<"No of Items purchased :"<<P[i].getCountOfItems()<<endl;
        cout<<"Purchase amount :"<<P[i].getAmount()<<endl;
    }
    cout<<"\n";
    return 0;
}

最后我必須添加顯示 function 的調用,以便我可以添加每個 object 的數量和計數。

有什么方法可以調用 class 成員函數嗎?

您可以獲取成員function的地址並稍后傳遞。

但是使用 C++11 或更好(閱讀n3337 , C++11 標准),請閱讀有關 C++的更多信息,然后考慮使用lambda-expressions 當然使用<algorithm><functional>標准標題。

花點時間閱讀更多關於標准容器字符串的信息。

 void display(Purchase obj[],int n)

為什么不能使用void display_vect(std::vector<Purchase>&vec); ? 如果您無法更改display的 API,請考慮從您的display成員 function 調用您的display_vect

閱讀五法則

我不完全確定問題是什么,或者你被要求做什么。 但是很明顯display不應該是Product的成員 function 。 Product的成員 function 應該關注一個特定的產品,但display正在打印所有產品,所以它應該是一個獨立的功能而不是成員 function。 您的代碼應如下所示

class Product
{
    ...
};

void display(Purchase obj[],int n)
{
    ...
}

然后從main調用它是微不足道的。

int main()
{
    ...
    display(P, n);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM