我该如何解决这个错误?
className需要2个参数{string,int}
className *Object;
Object= new className[2];
Object[1]= { name, id}; // ERROR
答案 0 :(得分:0)
首先,您需要了解代码的作用:
int main()
{
className *object; // Create a pointer to className type.
object = new className[2]; // Create an array of two className objects.
// note here you are instantiating className.
// This is possible because it have a default constructor.
object[1] = { "John Doe", 1 }; // Here you're assigning new values to a existing object trough
// the assignment operator(=). As you're working with visual-c++
// the compiler by default will generate the operator=() function, but
// if all conditions are not there the compiler can't generate it.
// You need to add to className another constructor.
cout << object[1].get_name() << endl;
}
以下课程将有效:
class className
{
public:
className(string pname, int pid) :name(pname), id(pid){} // New constructor.
className(){}
string get_name(){ return name; }
int get_id(){ return id; }
private:
int id;
string name;
};
您正在使用c ++,使用。
您的主要功能可以写成如下:
int main()
{
vector<className> objects; // A vector of className objects.
objects.push_back({ "John Doe", 1 }); // Add an object to vector.
objects.push_back({ "John Mark", 2 }); // Add another object to vector.
cout << objects[0].get_name() << endl; // Access to an object in vector.
return 0;
}