所以,如果我有这样的事情
template<typename... Args >
class tuple_class
{
public:
std::tuple<Args...> tup;
/*I left out the other functions */
};
Run Code Online (Sandbox Code Playgroud)
我想重载运算符<<,以便它在类上调用时递归打印元组.
恩.
auto a = tuple_class(1, 2 ,3);
std::cout << a << endl;
Run Code Online (Sandbox Code Playgroud)
希望打印'123'
我见过了元组打印机的其他例子,但我不能在没有麻烦的情况下将它应用到我的班级
我想我应该从这样的成员函数开始
template<typename... Args>
friend std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m);
Run Code Online (Sandbox Code Playgroud)
然后是课外的实际功能
template<typename... Args>
std::ostream& operator<<(std::ostream& os, const my_tuple<Args...> &m)
{
os << "SOMETHING" << std::endl;
return os;
}
Run Code Online (Sandbox Code Playgroud)
当我在班上调用<<运算符时,这实际上有效.但我不知道如何让它实际打印元组.
任何帮助,将不胜感激
所以我有一些例子
auto a = getMyTuple();
Run Code Online (Sandbox Code Playgroud)
最终将是std :: tuple <(some args)>的真实类型
现在我想将它存储在一个有模板的类中,因为我还不知道它的类型.有点像
template<typename T>
class my_tuple
{
public:
T mt;
my_tuple(T t)
{
mt = t;
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法获取auto返回的类型,所以我可以将它传递给模板类
my_tuple<getType(a)> myTup(a);
Run Code Online (Sandbox Code Playgroud) 如果我有以下几点的话
namespace mynamespace
{
class A
{
public:
class B{};
class C{};
};
int foo(B bObject, C cObject); //error
}
Run Code Online (Sandbox Code Playgroud)
编译时,B和C不命名类型.有没有办法让我可以在命名空间中定义使用A类中定义的公共嵌套类(B和C)的函数?