class A { int v; public: A next; void Func() { } };
时间: 2024-03-10 21:51:10 浏览: 157
这段代码中有一个问题,就是A类的成员变量next是一个A类型的对象,这会导致编译错误。因为在定义类A时,编译器并不知道A类的大小,也就无法确定A类对象所占用的内存空间大小。因此,如果要在A类中保存指向A类对象的指针,应该将类A的定义改为如下形式:
```
class A {
int v;
public:
A* next;
void Func() { }
};
```
这样就能够正确的定义一个指向A类对象的指针了。
相关问题
以下对类A的定义中正确的是() A. class A{private:int v;public : void Func(){}} B. class A{private : int v;A *next;}; C. class A{int v;public:void Func();};A::void Func(){} D. class A{int v;public: A next;void Func(){ }};
选项A和C是正确的类A的定义。
选项A中,类A定义了一个私有成员变量v和一个公有成员函数Func(),其中Func()没有参数和返回值。这是一个合法的类定义。
选项B中,类A定义了一个私有成员变量v和一个私有成员指针变量next。由于next是私有的,无法直接访问,也无法被类外部使用。因此,这个定义是不正确的。
选项C中,类A定义了一个私有成员变量v和一个公有成员函数Func(),其中Func()没有参数和返回值。另外,类外部还定义了Func()的实现,实现中访问了类的私有成员变量v。这也是一个合法的类定义。
选项D中,类A定义了一个私有成员变量v和一个公有成员函数Func(),同时定义了一个公有成员变量next,类型为A。由于A的大小是未知的,所以定义A类型的变量作为类的成员变量是不合法的。因此,这个定义是不正确的。
因此,正确答案是A和C。
阅读全文