我有以下声明。
namespace test{
static cl_option* find_opt(const int &val, const cl_option *options);
}
test::cl_option* test::find_opt(const int &val, cl_option *options){}
问题是编译时我收到以下错误。
error: ‘test::cl_option* test::find_opt(const int&, test::cl_option*)’ should have been declared inside ‘test’
提前致谢
答案 0 :(得分:6)
您声明的函数与您尝试定义的函数不同:第二个参数在声明中是“const”,而不是在定义中。这是两个不同的功能。
答案 1 :(得分:3)
问题是你有不同的声明和定义签名(第二个参数是const指针与非const指针)。编译器期望你在test
命名空间内声明非const版本,但它找不到它(它只找到带有const指针的声明)。
命名空间中的静态函数工作正常。这构建在GCC 4.0.1中:
namespace test {
struct B {};
static B* a();
}
test::B* test::a() {}
int main() { return 0;}