预期表达式对象数组

Expected an expression Array of Object

本文关键字:数组 对象 表达式      更新时间:2023-10-16

如何解决此错误?

类名需要 2 个参数 { 字符串, int}.

className *Object; 
Object= new className[2]; 

Object[1]= { name, id};  // ERROR 

.

首先,您需要了解代码在做什么:

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;
}

如果您使用矢量,那么您不必担心释放您用 new 分配的内存。