gpt4 book ai didi

c++ - C++中以另一个模板类作为参数的构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:39:44 24 4
gpt4 key购买 nike

我有模板类的问题。我想用另一个类作为具有不同类型的参数创建一个构造函数,但是每次我尝试初始化该类的属性时,我都会收到错误消息,它是私有(private)的,我无法访问它。如果有任何帮助,我将不胜感激。

这是简单的代码:

template <typename Type>
class SomeClass {
Type p;
public:
SomeClass(Type x) { p = x; }
template <typename Type2>
SomeClass(SomeClass<Type2> k) { p = k.p; }
Type GetP() { return p; }
};

int main()
{
SomeClass<double> c(2.4);
SomeClass<int> c1(c);
std::cout << c1.GetP() << std::endl;

return 0;
}

最佳答案

只需将类声明为友元即可:

template <typename Type>
class SomeClass {
Type p;
public:
template <typename Type2> friend class SomeClass;
SomeClass(Type x) { p = x; }
template <typename Type2>
SomeClass(SomeClass<Type2> k) { p = k.p; }
Type GetP() { return p; }
};

LIVE DEMO

关于c++ - C++中以另一个模板类作为参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30768735/

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