【发布时间】:2012-07-26 23:35:11
【问题描述】:
我有一个纯虚类CF,它表示任何一维连续函数,它被定义为一个头文件
// tools.h
class CF
{
public:
virtual double operator()(double x) const=0 ;
};
我打算做的是使用函子包装几个简单的函数,并在tools.h 中定义它们。如果我使用匿名类,例如:
// tools.h
class : public CF{
public:
virtual double operator()(double x) const { return 0.0; }
} zero;
然后我遇到了麻烦,因为在包含tools.h 的任何地方都重新定义了类。 gcc 抱怨:
// tools.h included in main.cpp, foo.cpp, and bar.cpp
foo.o:(.bss+0x0): multiple definition of `zero'
main.o:(.bss+0x0): first defined here
bar.o:(.bss+0x0): multiple definition of `zero'
main.o:(.bss+0x0): first defined here
我想我可以通过以下方式解决这个问题:
// tools.h
class zero_: public CF{
public:
virtual double operator()(double x) const { return 0.0; }
};
const static zero_ zero;
但我不喜欢它,因为zero_ 随处可见,我不需要它!我该如何解决这个问题?
【问题讨论】:
标签: c++ function anonymous-class