gpt4 book ai didi

c++ - 前向声明一个模板类需要返回原类?

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

我该如何解开这个结?如果重要的话,我正在使用 Visual Studio 作为我的编译器。显然,可以将 MOO 移动到 otherClass 并向上移动 otherclass,但这是现实中发生的更复杂问题的模型。我认为这里需要一个前向定义,但我不确定如何构建它。

这个结能解开吗,还是我必须把 sampClass 分成两个类,或者一个有接口(interface)的类?

#include <iostream>
class sampClass
{
public:
template <typename Z>
otherClass<Z> potato()
{
return otherClass<Z>(this);

}
sampClass(int a)
{
m_a = a;
}
void moo()
{
std::cout << "MOO!";
}
int m_a;
};

template <typename T>
class otherClass
{
public:
otherClass(sampClass* doMoo)
{
doMoo->moo();
}
};


int main()
{
sampClass a(5);
a.potato<int>();
return 0;
}

最佳答案

就像添加前向声明一样简单:

#include <iostream>

//
// forward declare otherClass here
//
template <typename T>
class otherClass;

class sampClass
{
public:
template <typename Z>
otherClass<Z> potato()
{
return otherClass<Z>(this);

}
sampClass(int a)
{
m_a = a;
}
void moo()
{
std::cout << "MOO!";
}
int m_a;
};

template <typename T>
class otherClass
{
public:
otherClass(sampClass* doMoo)
{
doMoo->moo();
}
};

关于c++ - 前向声明一个模板类需要返回原类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988240/

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