我在使用C++創建對象時遇到了一些麻煩。我創建了一個名爲Instruction的類,我試圖創建一個新實例,但是我收到編譯器錯誤。C++新操作符。創建一個新實例
類代碼:
class Instruction{
protected:
string name;
int value;
public:
Instruction(string _name, int _value);
~Instruction();
void setName(string _name);
void setValue(int _value);
string getName();
int getValue();
virtual void execute();
};
//constructor
inline Instruction::Instruction(string _name, int _value){
name = _name;
value = _value;
}
//destructor
inline Instruction::~Instruction(){
//name = "";
//value = 0;
}
inline void Instruction::setName(string _name){
name = _name;
}
inline void Instruction::setValue(int _value){
value = _value;
}
inline string Instruction::getName(){
return name;
}
int Instruction::getValue(){
return value;
}
inline void Instruction::execute(){
cout << "still have to implement";
}
這是我嘗試創建一個新的對象:
Instruction* inst;
inst = new Instruction("instruction33", 33);
我得到以下編譯器錯誤:
functions.h:70: error: no matching function for call to ‘operator new(unsigned int, std::string&, int&)’
/usr/include/c++/4.3/new:95: note: candidates are: void* operator new(size_t)
/usr/include/c++/4.3/new:99: note: void* operator new(size_t, const std::nothrow_t&)
/usr/include/c++/4.3/new:105: note: void* operator new(size_t, void*)
你們是正確的。這個錯誤來自這行代碼:
instList.push_back(inst);
其中instList是這樣創建的:
list <Instruction> instList; //#include <list> is in the file
它完美地編譯我 – Xinus 2009-11-15 03:51:14
我添加了問題在代碼中的位置。當我嘗試將指令添加到指令列表時發生。 – user69514 2009-11-15 03:53:27
你用'g ++'編譯?我試着用'gcc'編譯這段代碼,並且出現了類似的錯誤。 – hbw 2009-11-15 03:53:58