簡體   English   中英

構造函數定義C ++

[英]Constructor Definition C++

我在C ++中有以下課程:

class IntStack
{
    private:
        int *stackArray;
        int stackSize;
        int top;

    public:
        IntStack(int);          // Constructor
        // rest of the 
        // member function
};  

我在類外定義了構造函數為:

IntStack::IntStack(int size)
{
    stackArray = new int[size];
    stackSize = size;
    top = -1;
}

這里的錯誤是: initializing argument 1 of 'IntStack::IntStack(int)

我創建了與以下類相同的實例:

cout << endl << "Enter size of Stack: ";
cin  >> stackCapacity;
IntStack stack = new IntStack(stackCapacity);

這里的錯誤是: invalid conversion from 'IntStack*' to 'int' [-fpermissive]

如何解決這些錯誤?

new IntStack(stackCapacity); 為堆上的IntStack分配空間,並返回指向新分配的內存的指針。 然后,您嘗試將此指針放入IntStack變量中。

可以將stack更改為指針:

IntStack *stack = new IntStack(stackCapacity);

或者不要在堆上分配內存:

IntStack stack(stackCapacity);

您可以像在類之外定義constructor 但問題是,在下面的語句中,你正在嘗試為分配內存stackheap

IntStack stack = new IntStack(stackCapacity); /* stack should be of pointer type */

應該

IntStack *stack = new IntStack (stackCapacity);

向您的構造函數添加一個explicit關鍵字。 我認為它將嘗試將您的參數轉換為實例類對象以進行復制構造。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM