gpt4 book ai didi

c++ - 错误C2079 'std::pair,Dummy>::first'使用未定义的类 'Dummy'

转载 作者:行者123 更新时间:2023-12-01 14:54:30 24 4
gpt4 key购买 nike

以下代码段可以在C++ 11/14/17标准下使用GCC 9.1和Clang 6.0很好地编译,但是拒绝使用Visual Studio 2019进行编译。我可以将getDummies()的返回值更改为auto,而VS将使用C++进行编译14/17标准,但这破坏了所有编译器的C++ 11兼容性,我需要保持这种兼容性。

#include <cstdlib>
#include <utility>

template<typename T>
class Dummy
{
public:
//static auto getDummies() // Works but breaks C++11 compatibility
static std::pair<Dummy<int>, Dummy<int>> getDummies()
{
return std::make_pair(Dummy<int>{}, Dummy<int>{});
}
};

int main()
{
auto dummies = Dummy<int>::getDummies(); // Error C2079

return EXIT_SUCCESS;
}

最佳答案

在类内部定义了Dummy函数时,尚未完全定义类getDummies()

您可以在类中声明该函数,然后在类外部对其进行定义,例如:

template<typename T>
class Dummy
{
public:
static std::pair<Dummy<int>, Dummy<int>> getDummies();
};

template<typename T>
std::pair<Dummy<int>, Dummy<int>> Dummy<T>::getDummies()
{
return std::make_pair(Dummy<int>{}, Dummy<int>{});
}

关于c++ - 错误C2079 'std::pair<Dummy<int>,Dummy<int>>::first'使用未定义的类 'Dummy<int>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58871670/

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