嗨,我正在阅读Joshi的C++设计模式和衍生产品定价中的第4章,我不理解代码的某些部分.我们有一个PayOff类,我们想要定义一个PayOff作为成员的类VanillaOption.为了有效地执行此操作,他使用虚拟副本构造函数.
#ifndef PAYOFF_H
#define PAYOFF_H
class PayOff
{
private:
public:
PayOff(){}
virtual double operator() (double Spot) const = 0;
virtual PayOff* clone() = 0;
virtual ~PayOff(){}
};
class PayOffCall : public PayOff
{
private:
double Strike;
public:
PayOffCall(double Strike_);
virtual PayOff* clone(){return new PayOffCall(*this);}
virtual ~PayOffCall(){}
};
#endif
#ifndef VO_H
#define VO_H
#include "PayOff.h"
class VanillaOption
{
private:
PayOff* ThePayOffPtr;
double Expiry;
public:
VanillaOption(PayOff&,double ); //constructor
VanillaOption(VanillaOption& original) {thePayOffPtr = original.thePayOffPtr->clone(); Expiry = original.Expiry;} //copy constructor
VanillaOption& operator=(VanillaOption&);
~VanillaOption();
}; …Run Code Online (Sandbox Code Playgroud) 我想在Matlab中定义一个符号函数矩阵(而不是变量).在工作区中,我希望它是大小为N-by-M的类symfun的元素(其中N和M是正整数).
我正在尝试实现Prims算法来查找给定图形的最小生成树.代码现在编译,但可执行文件(而不是打印MST)打印"分段错误:11".而且,我得到一个警告,:
Warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)
有人能帮我理解它有什么问题吗?提前致谢.
double Graph::getWeight(int v, int w)
{
if(edge(v,w))
{
Node* t = adj[v];
while(t != NULL)
{
t = t->next;
if((t ->v) == w)
return t->weight;
}
}
}
Run Code Online (Sandbox Code Playgroud)