c++ 里面struct可以new么?还是可以直接一起赋值?在类里面如何赋值?

定义了一个struct
typedef float vertex3f[3];
在一个类里面应用这个struct
A{
const vertex3f position;
int y;
}

如何初始化这个类
例如:
A::A()
:position({minrand*width, height+size.0,0.0}),y(0)
{
....
}
计算机老报 position哪一行有错

顺便问一下:
c++ 里面struct可以new么?还是可以直接一起赋值?在类里面如何赋值?

错误的原因是 position只是一个指向float类型常量的指针,所以只能用指针初始化

c++ 里面struct可以new,
另外:

C++中,struct关键字与Class关键字基本是一样的,但是,有两点不同
1 struct定义的数据类型里面所有成员默认级别都是共有的,而class里面所有成员默认级别都是私有的
2 在模板定义中,只能用class 或者typename 而不能用struct

参考资料:C++官方标准

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-19
结构体可以NEW,如果是NEW出来的,分配的空间在堆里面,需要你手动释放,否则在分配的内存栈里面,离开作用域就自动回收了。
结构体赋值,应该用memcpy,并且有可能需要深拷贝。

A{
A();
~A();
vertex3f *position;
int y;
}
A::A()
{
position =NEW vertex3f ();
}

A::~A()
{
if(position )
delete position ;
}
第2个回答  2009-08-19
你这个结构体使用不用那么复杂,想用的话先建个对象,如:
A aExample;
然后赋值就这样:
aExample.position = XXXXXXX;
aExample.y=XXXXXX;
结构体定义完了拿来用就行,不用初始化,用的时候必须自己定义一个对象。而不是用结构体本身
第3个回答  2009-08-19
初始化类的const 数组 成员

const float f[3]={1.0f, 2.0f, 3.0f};//用来初始化的数组

class a{
private:
const float * const position; //定义成指针
int y;
public:
a(void);
};

a::a(void) : position(f),y(0)//初始化列表中用f初始化position
{
;
}

参考资料:原创

c++ 里面struct可以new么?还是可以直接一起赋值?在类里面如何赋值?
c++ 里面struct可以new,另外:C++中,struct关键字与Class关键字基本是一样的,但是,有两点不同 1 struct定义的数据类型里面所有成员默认级别都是共有的,而class里面所有成员默认级别都是私有的 2 在模板定义中,只能用class 或者typename 而不能用struct 参考资料:C++官方标准 ...

C++里面能不能直接给结构体赋值?
TC确实不允许这样的初始化, TC++里面编译这样的C代码也不行,看来Borland的开发者们还是忠于的早期的C风格。LCC看来也不支持。早期的C以及ANSI C中是不允许对结构体型的自动变量进行一次性初始化的,要进行一次性初始化,除非你把你需要的struct变量声明为静态(static)变量,或全局变量(全局变量被默认...

c++ 结构体struct中的数组 初始化?
数组不能通过数组名进行等号赋值;赋值需要一个一个元素进行,因为数组名是一个const指针,不能更改。

C++里的struct和class的区别到底是什么?我在网上查到的是:除了他们的默...
如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同!简单的说就是,存取class的data member和非virtual function效率和struct完全相同!不管该data member是定义在基类还是派生类的。如果不是为了和C兼容,C++中就不会有struct关键字。因此建议是:如果不需要与C兼容或传递参数给C程序,不...

c++为什么要让struct可以定义成员函数
对C来说,struct可以放任何它支持的数据类型。包括函数指针——后来C++所谓的虚函数表,很多编译器的实现,就是一个指向另一个全局结构体的指针,这个全局结构体里面是一条一条的函数指针,指向对应类重载后的所谓“虚函数”。至于各种所谓的成员函数,实际上就是些第一个参数是classXX类型的this指针的...

C++结构struct中能有类类型数据成员吗?
在 C++里面, struct 和 class 唯一的区别只是默认成员函数和变量的访问属性的区别。class 默认是 private, 也就是你不写 访问属性的时候默认私有,而 struct 是public,为公有。其他没有任何区别,所以可以直接使用其他类类型,等同class 使用 类的组合。

C++:Struct XXX a = b是复制内容吗?
直接等号赋值,只是浅拷贝。也就是不同的指针指向同一个内存区域,这样是比较危险的,应为程序有自己的析构函数,会自动释放自己开辟的空间,导致另一个指针无所指的情况。这是无关乎指针的问题的。可以重载=操作符,如struct *p=new struct XXX;p->………就可以了,这样就是自己开辟了一个内存空间...

c语言赋值是什么?
C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有问题。但是稍微复杂一点的结构体里面会有指针成员,那么以上的浅拷贝则会有问题。赋值会直接将结构体的指针变量被赋值,赋值之前其所指向的内存单元丢失,赋值之后若该指针指向的内存单元被其它指针释放掉...

C++中,相同类的对象为何能直接赋值?
struct test{ int a, b;} test ret(test *p) { return *p;} \/\/这样的代码是可以的,原因是编译器生成 就是直接复制的代码。所以有时候不需要重载=运算符 在c++中有时候必须使用重载函数=,比如在使用动态内存分配时。还有父类为何能直接被子类赋值,子类为何不能被父类赋值?答:子类继承于父类...

在C语言中struct结构体里面 不能定义函数么?
c中不能,c++里可以在结构体内定义函数,用法和class定义类是一样的,说穿了struct 和 class用法相同,但要注意的一点是,struct默认的是public类型,而class默认的是private类型的

相似回答