、<オペレータ
bool operator< (const product &other) const {
return cost < other.cost;
}
を追加し、すべての製品を保持するベクトルを作成します。
(コストでソートされます)ソート製品のベクトル
std::sort(products.begin(), products.end());
vector<product> products;
products.push_back(product1);
products.push_back(product2);
products.push_back(product3);
そして、ちょうどこれは、同じくらい読みやすく、デバッグで
products[0].discount = lowDiscount;
products[1].discount = midDiscount;
products[2].discount = highDiscount;
ソートされた要素にあなたの割引を適用しますそれらのネストされたif文。
あなたのコードには何が間違っているのか完全にはっきりしているわけではありません。
編集:あなたのコードのロジックと根本的に間違っているものがあるので は、ここに完全に含まれるサンプルです:
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
class product {
public:
product(std::string name, double cost);
~product();
//in product class, add the < operator
bool product::operator< (const product &other) const;
std::string Name;
double Cost;
double Discount;
};
product::product(std::string name, double cost) : Name(name), Cost(cost){}
product::~product(){}
const double highDiscount = 0.3;
const double midDiscount = 0.2;
const double lowDiscount = 0.1;
struct CompareProductPointers {
bool operator()(const product* l, const product* r) {
return *l < *r;
}
};
int main() {
//create a vector holding all your products
product product1("product1", 10);
product product2("product2", 8);
product product3("product3", 12);
std::vector<product*> products;
products.push_back(&product1);
products.push_back(&product2);
products.push_back(&product3);
//sort your product vector (which will sort by cost)
std::sort(products.begin(), products.end(), CompareProductPointers());
//apply your discount to the sorted elements
products[0]->Discount = lowDiscount;
products[1]->Discount = midDiscount;
products[2]->Discount = highDiscount;
//output
std::cout << product1.Name << " has a " << (product1.Discount * 100) << "% discount" << std::endl;
std::cout << product2.Name << " has a" << (product2.Discount * 100) << "% discount" << std::endl;
std::cout << product3.Name << " has a" << (product3.Discount * 100) << "% discount" << std::endl;
return 0;
}
してください** [編集] ** [MCVE]または[SSCCEとあなたの質問(ショート、自己完結型、正しい例)](http://sscce.org) – NathanOliver
'adiscount'はありますか?あなたはどのようにコードを呼び出しますか? – Jarod42
@ Jarod42私は自分の投稿を編集しました。はい、私は倍率として私の割引を宣言します。 –