c++ 语法问题 求助 类模版中声明结构体的
本帖最后由 ffggddss 于 2020-1-19 12:46 编辑问题已解决,语法没有问题,因为使用模版的的类,所以无法指定具体成员,类在class里面声明 所以也只能在里面使用. 外部成员函数做返回值是肯定不行的.
```
template <class T>
class MyClass
{
public:
MyClass();
~MyClass();
typedef struct mystruct
{
T x;
T y;
}_mystruct,*Pmystruct;
Pmystruct mlist;
};
template <class T>
MyClass<T>::MyClass()
{
mlist = new mystruct;
mlist->x = 10;
mlist->y = 15;
}
template <class T>
MyClass<T>::~MyClass()
{
delete mlist;
}
void test()
{
MyClass<int> pp;
int x = pp.mlist->x;
int y = pp.mlist->y;
printf("%d%d \n" ,x,y);
}
```
使用的vs2015编译, 编译可以通过,没有报错,但是在方法里 使用mlist->x 的时候提示没有成员,写好mlist->x=10; 编译也是可以通过,运行也没有问题.
请问怎么回事,如何修改.
再看看下面的代码
```
template <class T>
class MyClass
{
public:
MyClass();
~MyClass();
typedef struct mystruct
{
T x;
T y;
}_mystruct,*Pmystruct;
Pmystruct mlist;
//Pmystruct GetIndex(int pIndex) 这样无法编译
Pmystruct GetIndex(int pIndex)//把方法写在类里 就可以编译
{
}
};
template <class T>
MyClass<T>::MyClass()
{
mlist = new mystruct;
mlist->x = 10;
mlist->y = 15;
// 这里 mlist-> 编译器无法自动弹出成员 提示没有成员
}
template <class T>
MyClass<T>::~MyClass()
{
delete mlist;
}
//template<class T>
//Pmystruct MyClass<T>::GetIndex(int pIndex)//写在类外
//{
// return Pmystruct();
//}```
mlist = new mystruct,改为mlist = new _mystruct试下
惊现假的VS????????????? huzpsb 发表于 2020-1-18 13:21
惊现假的VS?????????????
code::blocks
真VS也没问题,所以你的问题是什么问题 #include <iostream>
using namespace std;
template <class T>
class MyClass
{
private:
typedef struct{
T x;
T y;
}_mystruct,*Pmystruct;
public:
MyClass();
~MyClass();
Pmystruct mlist;
};
template <class T>
MyClass<T>::MyClass()
{
mlist = new _mystruct;
mlist->x = 10;
mlist->y = 15;
}
template <class T>
MyClass<T>::~MyClass()
{
delete mlist;
}
int main()
{
MyClass<int> pp;
int x = pp.mlist->x;
int y = pp.mlist->y;
printf("%d%d \n" ,x,y);
} JuncoJet 发表于 2020-1-18 15:12
#include
using namespace std;
你看构造函数的地方 mlist->x=10;
正常使用指针 -> 编译器应该是自动弹出成员的, 但是这个不会..会提示没有成员.我的VS2015..虽然编译没问题 只是代码写的时候心里总是没底. nomoretime 发表于 2020-1-18 12:48
mlist = new mystruct,改为mlist = new _mystruct试下
还是不行,编译器还是提示没有成员. 不知道怎么回事. 你的编译器可以提示么,版本呢我的VS2015 huzpsb 发表于 2020-1-18 13:21
惊现假的VS?????????????
我说了编译跟运行都没问题,但是写代码的时候,你在方法里使用那个mystruct的指针 都显示无法显示成员,你看构造函数里,你试下 mlist-> 能出成员么,我不知道是不是我语法有问题,心里很没底,! huzpsb 发表于 2020-1-18 13:21
惊现假的VS?????????????
而且这只是简略代码,就是反映一下遇到的问题,因为不能显示构造函数的成员,后面所有的方法,如果是返回的 mystruct* 指针的成员函数都是无法编译的,但放在class里面 却可以编译.
页:
[1]
2