gpt4 book ai didi

c++ - 海湾合作委员会错误 : incomplete type 'claculator' used in nested name specifier

转载 作者:行者123 更新时间:2023-11-30 00:40:11 25 4
gpt4 key购买 nike

我开发了一个库,当我用 GCC 编译我的代码时(在带有 CodeBlocks 的 Windows 中),源代码没有编译并且出现这个错误:

错误:嵌套名称说明符中使用了不完整类型“claculator”。

我写了一个示例代码来准确地生成这个错误:

class claculator;

template<class T>
class my_class
{
public:

void test()
{
// GCC error: incomplete type 'claculator' used in nested name specifier
int x = claculator::add(1, 2);
}

T m_t;
};

// This class SHOULD after my_class.
// I can not move this class to top of my_class.
class claculator
{
public:

static int add(int a, int b)
{
return a+b;
}
};

int main()
{
my_class<int> c;
c.test();

return 0;
}

我该如何解决这个错误?

请注意,我的源代码已在 Visual Studio 中成功编译。

谢谢。

最佳答案

非常简单。在 calculator 类的定义之后 定义 test() 为:

class calculator;

template<class T>
class my_class
{
public:

void test(); //Define it after the definition of `calculator`

T m_t;
};

// This class SHOULD after my_class.
// I can not move this class to top of my_class.
class calculator
{
public:

static int add(int a, int b)
{
return a+b;
}
};

//Define it here!
template<class T>
void my_class<T>::test()
{
int x = calculator::add(1, 2);
}

这样,calculator完整 定义在编译器解析test() 的定义 时为编译器所知

关于c++ - 海湾合作委员会错误 : incomplete type 'claculator' used in nested name specifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6717622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com