首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 对象指针数组 的初始化 有关问题

2013-11-14 
C++ 对象指针数组 的初始化 问题class SkipNode{public:SkipNode( int k 0, int v 0 ) : key(k), val(

C++ 对象指针数组 的初始化 问题


class SkipNode
{
public:
SkipNode( int k = 0, int v = 0 ) 
: key(k), val(v) {}
int key;
int val;
};


如下,这样初始化对吗?
SkipNode* newNodes = new SkipNode[5] (5, 4);
够早了5个对象,每个对象都调用构造函数,有什么错吗? C++ 对象指针数组
[解决办法]
一行的说,没有这样的用法
[解决办法]
#include<iostream>
using namespace std;
class SkipNode
{
public:
    SkipNode( int k = 0, int v = 0 ) 
        : key(k), val(v) {}
    int key;
    int val;
};
int main()
{
SkipNode* newNodes[5];
for(int i=0;i<5;i++)
{
newNodes[i]=new SkipNode;
newNodes[i]->key=1;
newNodes[i]->val=1;
}
return 0;
}
这样就行了
[解决办法]
#include <memory>
#include <iostream>

class SkipNode
{
public:
SkipNode(int k = 0, int v = 0)
: key(k), val(v) {}
int key;
int val;
};



int main()
{
std::allocator<SkipNode> alloc;
SkipNode* p = alloc.allocate(5);
for (int i = 0; i < 5; ++i)
{
                //C++ 0x
alloc.construct(p + i, 5, 4);
}

for (int i = 0; i < 5; ++i)
{
alloc.destroy(p + i);
}

alloc.deallocate(p, 5);

return 0;
}

[解决办法]
不要和编译器做游戏
[解决办法]
引用:
编译还是会报错
error C2143: 语法错误 : 缺少“;”(在“{”的前面)

需要支持C++11的编译器。诸如:VS2013/g++4.8.x/Clang3.x
http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx
http://msdn.microsoft.com/en-us/library/vstudio/dn387583.aspx

热点排行