对类的静态方法成员的未定义引用



我有这个编译器错误,抱怨静态函数。我不知道这个问题是关于枚举还是关于实际的类

// enumeration
enum SOURCE  { file, network};
//class declaration
class A
{
public:
    static const double findValue(std::string nme);
    static const double getValue(SOURCE ds);
};
// class definition
const double A::findValue(std::string nme)
{
    ...
    ...
    return some_double;
}
const double A::getValue(SOURCE ds)
    double val;
    switch(SOURCE::ds)
    {
        case SOURCE::file:
            ......
            break;
        case SOURCE::network:
            .....
            break;
        default: 
            break;
    }
}
   // use
void myValue()
{
double det1 = A::findValue("DNS");
double det2 = A::getValue(SOURCE::file);
}

为什么我的编译器抱怨两个静态方法是未定义的?

错误:

In function 'System::myValue()' : System.cpp : (.text._ZN11System8myValueEv[_ZN11.....]+0x1d): undefined reference to 'A::getValue(SOURCE)'

findValue()的其他方法出现类似错误

您的代码有一些问题。首先,定义函数A::findValue()两次。其次,在A::getValue()的主体中,您需要像这样编写开关语句:switch(ds),而不是switch(SOURCE::ds)。第三,正如@JSF指出的那样,按值返回const原语是不寻常的(尽管在技术上是合法的),但可能不是您想要做的。

编辑:A::getValue()也需要返回一个值

最新更新