gpt4 book ai didi

C++ 嵌套模板返回类型

转载 作者:行者123 更新时间:2023-11-30 01:54:52 26 4
gpt4 key购买 nike

我试图从它的模板容器类中返回一个嵌套的模板对象

template <typename T>
class A {
template <typename S>
struct node {
S value;
struct node<S>* right;
....
};
private:
....
node<T>* foo();
}

我正在吃

template <typename T>
A<T>::node<T>* A<T>::foo() {
....
}

这是 Visual Studio 的错误

1>  A.cpp
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(576): warning C4346: 'A<T>::?$node@$RT@BAAB@' : dependent name is not a type
1> prefix with 'typename' to indicate a type
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(576): error C2143: syntax error : missing ';' before '*'
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(576): error C2065: 'T' : undeclared identifier
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(576): error C2923: 'A' : 'T' is not a valid template type argument for parameter 'T'
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(576): error C2923: 'A<T>::node' : 'T' is not a valid template type argument for parameter 'S'
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(613): error C2509: 'foo' : member function not declared in 'A'
1> c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.h(11) : see declaration of 'A'
1>c:\users\user\dropbox\visual studio projects\fooProj\fooProj\A.cpp(613): fatal error C1903: unable to recover from previous error(s); stopping compilation

我是不是漏掉了一些太明显的东西?

编辑:

A.h
#ifndef TEMP_H

#define TEMP_H

template <typename T>
class A {
template <typename S>
struct node
{
S value;
struct node* right;
struct node* left;
};


private:
node<T>* removeWithTwoChildren();
};

template <typename T>
A<T>::template node<T>* A<T>::removeWithTwoChildren() {
A<T> temp = new A<T>;
return temp;
}

#endif

它不需要是一个结构,我也可以使用一个类。

我正在使用 vc++ 2013。

我遇到问题的地方是返回类型声明

A<T>::template node<T>*

我想回去

node<T>*

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