小编use*_*808的帖子

重载输出<< operator for class,以打印其中的元组

所以,如果我有这样的事情

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)

当我在班上调用<<运算符时,这实际上有效.但我不知道如何让它实际打印元组.

任何帮助,将不胜感激

c++ iostream tuples operator-overloading

6
推荐指数
1
解决办法
303
查看次数

如何将真实类型的auto传递给模板

所以我有一些例子

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)

c++ templates class c++14

3
推荐指数
1
解决办法
73
查看次数

如何访问嵌套类

如果我有以下几点的话

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)的函数?

c++ nested namespaces class

1
推荐指数
1
解决办法
36
查看次数