gpt4 book ai didi

c++ - 我可以通过模板 C++ 将对象传递给类吗

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:17 25 4
gpt4 key购买 nike

我可以这样做吗:

class A
{
public:
void print()
{
std::cout<<"A"<<std::endl;
}
};

class B
{
public:
void print()
{
std::cout<<"B"<<std::endl;
}
};

template <class T>
class C
{
public:
void say()
{
T.print();
}
};

int main()
{
A a;
B b;
C<a> c;
c.say();
C<b> d;
d.say();

return 0;
}

如果我不想为 AB 使用基类,最好的方法(运行速度快)是什么?

最佳答案

您的代码有很多问题。

您似乎将类型与实例(或类和对象)混淆了。

这段代码实际上应该按预期编译和工作。

#include <iostream>

class A
{
public:
void print()
{
std::cout<<"A"<<std::endl;
}
};

class B
{
public:
void print()
{
std::cout<<"B"<<std::endl;
}
};

template <class T>
class C
{
public:
void say(T obj)
{
obj.print();
// If T::print() were static, you could call it like that instead.
}
};

int main()
{
A a;
B b;
C<A> c; // template for C demands a class, not an object!
// in practice this would mean you write 'A' instead of 'a' here
c.say(a);
C<B> d; // same here
d.say(b);
}

关于c++ - 我可以通过模板 C++ 将对象传递给类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565752/

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