【发布时间】:2019-02-25 00:33:32
【问题描述】:
我有以下基类:
class Network::ActivationFunction
{
public:
virtual double evaluate(double x) =0
virtual double evaluate_derivative(double x) =0
};
这意味着作为神经网络中神经元激活函数的基类。我想拥有不同类型的 sigmoids/relu/...
我真的不想拥有任何特定激活函数的多个实例,所以我想做这样的事情:
class : public Network::ActivationFunction
{
public:
double evaluate(double x);
double evaluate_derivative(double x);
} logisticActivationFunction;
然后在 .cpp 文件中定义函数。但是,由于它是匿名的,我不知道如何在另一个文件中定义它的成员函数。
那么我怎样才能使上述想法发挥作用,或者以任何其他方式只有一个特定激活函数的实例?
【问题讨论】:
-
不幸的是,C++ 不能以这种方式工作。最接近此类的方法是在单个翻译单元内的匿名命名空间中声明一个类,这意味着所有内容,包括使用匿名类的所有内容,都包含在单个 .cpp 文件中。
-
我的意思是我可以在头文件中定义函数,然后它就可以工作了。所以 C++ 确实有效。我只是想问是否有另一种方法不会破坏接口/实现障碍。
标签: c++ class oop inheritance anonymous-class