C++将内部结构作为参数传递

发布于 2024-12-29 00:22:05 字数 527 浏览 2 评论 0原文

有一个结构体 TOut 包含内部结构体 TIn:

template <typename T>
struct TOut
{
    struct TIn
    {
            bool b;
    };

    TIn in;
T t;
};

如何正确地将 TIn 作为某个方法的形式参数传递?

class Test
{
public:
    template <typename T>
    static void test ( const TOut<T>::TIn &i) {} //Error
};


int main()
{
TOut <double> o;
Test::test(o.in);
}

该程序编译时出现以下错误:

Error   4   error C2998: 'int test' : cannot be a template definition

There is a structure TOut containing inner structure TIn:

template <typename T>
struct TOut
{
    struct TIn
    {
            bool b;
    };

    TIn in;
T t;
};

How to correctly pass TIn in as a formal parameter of some method?

class Test
{
public:
    template <typename T>
    static void test ( const TOut<T>::TIn &i) {} //Error
};


int main()
{
TOut <double> o;
Test::test(o.in);
}

The program compiles with the following error:

Error   4   error C2998: 'int test' : cannot be a template definition

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橙味迷妹 2025-01-05 00:22:05

您需要使用 typename 关键字:

template <typename T>
static void test ( const typename TOut<T>::TIn &i) {}

请参阅我必须在哪里以及为什么必须放置“template”和“typename”关键字?

You need to use the typename keyword:

template <typename T>
static void test ( const typename TOut<T>::TIn &i) {}

See Where and why do I have to put the "template" and "typename" keywords?

祁梦 2025-01-05 00:22:05

为什么不能用更简单的

template <typename T>
static void test (const T& i)

来代替呢?

Why cannot you use the simpler

template <typename T>
static void test (const T& i)

instead?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文