【发布时间】:2020-03-05 18:53:06
【问题描述】:
我正在尝试实施一种基本的策略模式来进行理解。我是编程新手。我在下面的代码中做错了什么。
谁能给出一个基本的策略模式的c实现。提前谢谢
#include <stdio.h>
#include <stdlib.h>
typedef int (*CustomerPriceStrategy)(int);
int bronzePriceStrategy(int);
int silverPriceStrategy(int);
int goldPriceStrategy(int);
struct Customer
{
const char* name;
CustomerPriceStrategy priceStrategy;
};
void placeOrder(struct Customer* customer)
{
int a;
a=customer->priceStrategy(3);
printf("%d",a);
}
int main(void) {
struct Customer *customer;
customer->name="bronze";
customer->priceStrategy=&bronzePriceStrategy;
placeOrder(customer);
return EXIT_SUCCESS;
}
int bronzePriceStrategy(int a)
{
printf(" 40+ shipping");
return (a+40);
}
int silverPriceStrategy(int a)
{
printf(" 25+ shipping");
return (a+25);
}
int goldPriceStrategy(int a)
{
/* Free shipping for gold customers. */
printf(" no shipping fee");
return a;
}
【问题讨论】:
-
你的函数没有使用它们的参数
int a。此外,printf(" amount * 0.90")不进行乘法运算,您不妨使用puts()。不清楚为什么这些函数总是return 3; -
struct Customer *customer;是一个未初始化的指针。所以customer->name="bronze";是未定义的行为。
标签: c design-patterns procedural-programming