我有这个编译器错误,抱怨静态函数。我不知道这个问题是关于枚举还是实际的类
// 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()方法的类似错误。
答案 0 :(得分:0)
您的代码存在一些问题。首先,您定义函数A::findValue()
两次。其次,在A::getValue()
的正文中,您需要编写如下的开关语句:switch(ds)
,而不是switch(SOURCE::ds)
。第三,正如@JSF指出的那样,按值返回一个const原语是不寻常的(虽然技术上是合法的),但可能不是你想要做的。
编辑:A::getValue()
也需要返回一个值。