[英]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
。 但問題是,在下面的語句中,你正在嘗試為分配內存stack
從heap
。
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.