藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


在線等待,指針問題,求助各位大蝦

我有一個CObj類,定義一個CObj ** pObj指針,我如何用new實現這樣的功能pObj=(CObj**)malloc(num*sizeof(pObj*));功能。謝謝!

在線等待,指針問題,求助各位大蝦

:shock: ,不清楚你的意思
pObj = &(new CObject);

在線等待,指針問題,求助各位大蝦

我定義的CObj **pObj,我要new出n個空間來存放CObj對像地址,怎麼用new來實現,就有點像pObj=(CObj**)malloc(n*sizeof(CObj*))一樣的功能,用
new來實現。

在線等待,指針問題,求助各位大蝦

-->
你定義一個對像指針數組怎麼樣?

在線等待,指針問題,求助各位大蝦

C++ 與 C 不要混用,不然怎麼死都不知道!!!!

在線等待,指針問題,求助各位大蝦

因為n數目不固定,所以要用指針,有什麼好方法?

在線等待,指針問題,求助各位大蝦

在線等待,指針問題,求助各位大蝦

各位開動大腦,我覺得這個問題有一定價值,也幫忙把這問題解決。

在線等待,指針問題,求助各位大蝦

在線等待,指針問題,求助各位大蝦

-->

同意,vector是個好東西。

在線等待,指針問題,求助各位大蝦

lenovo   兄,你好,能舉一個例子嗎?

在線等待,指針問題,求助各位大蝦

[b]pObj=(CObj**)malloc(n*sizeof(CObj*))[/b]這種寫法嚴重不推薦! 因為它只是分配了那麼大的內存,而沒有調用對象的構造函數,更重要的是它沒有對C++底層的一些變量進行正確的構造,如虛函數表,實在要這樣寫的話,CObj不能有什麼虛函數之類的東西,只能是非常簡單的類,和C的「struct「差不多的。

[code]
class test
{
public:
        test() {}
protected:
        int i;
        int j;
};

int
main()
{
        test * p;
        int i;

        i = 1000;
        p = new test[i];
        printf("%x\n", (int)p);
}
[/code]

在線等待,指針問題,求助各位大蝦

如果是用VC的話,它有個特殊的new操作符:
template<class TYPE>;
void  ConstructElements(TYPE* pElements, int nCount)
{
        ASSERT(nCount == 0 ||AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));

        // first do bit-wise zero initialization
        memset((void*)pElements, 0, nCount * sizeof(TYPE));

        // then call the constructor(s)
        for (; nCount--; pElements++)
                ::new((void*)pElements) TYPE;
}

在線等待,指針問題,求助各位大蝦

qjlemon 兄,你這樣對像數目還是固定的呀,我要實現可變的要求

在線等待,指針問題,求助各位大蝦

你是說分配以後還要可變嗎?還是要在分配時可變?
i=1000,i不就是可變的嗎?否則為什麼不直接new test[1000]呢。

在線等待,指針問題,求助各位大蝦

pObj = new (CObj *)[8];
不可以嗎?

在線等待,指針問題,求助各位大蝦

qjlemon   兄,你的方法能實現,因為個數是從配置文件讀出來的,謝謝各位大哥參與討論,還有其他好辦法?

在線等待,指針問題,求助各位大蝦

-->[code 發表:[/i]
vector<CObj*>; a;
CObj *b = new&#40;CObj&#41;;
a.push_back&#40;b&#41;;[/code]
大致是這個樣子吧,你找stl 的vector的資料看看怎麼對vector
進行操作。

在線等待,指針問題,求助各位大蝦

我要引用第n個元素的成員函數或成員變量,怎麼引用?

在線等待,指針問題,求助各位大蝦



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com