小编Moo*_*igo的帖子

Malloc/“ISO C90 禁止混合声明和代码”

我使用链接列表来存储有关客户的数据:

typedef struct{
    char* name;
    unsigned long number;
    char package;
}Client;


struct node {
    Client value;
    struct node *next;
};
typedef struct node *LinkedListNode;
Run Code Online (Sandbox Code Playgroud)

当我在主函数中声明列表头时,编译器现在会抱怨混合声明和代码:

int main(){

    LinkedListNode head;
    head = (LinkedListNode) malloc(sizeof(struct node));

    Client aux,aux2;
    char command;
    command= getchar();
    while(command!='x'){ 
        switch(command){
                    (...)
Run Code Online (Sandbox Code Playgroud)

我可以看到问题是什么,因为我只是在添加“malloc”调用后才收到此错误。我只是不知道如何修复它

如果重要的话,这些结构在 *.h 文件中定义。

c malloc gcc

1
推荐指数
1
解决办法
2700
查看次数

调用超类方法运算符==

我正在经历从Java到C++的过渡,我正在尝试编写一个简单的程序.

有一个超类,Animal具有以下接口:

class Animal
{
public:
    Animal(int a, std::string n);

    bool operator==(Animal a);
private:
    int age;
    std::string name;
};
Run Code Online (Sandbox Code Playgroud)

它的子类Dog:

class Dog : public Animal
{
public:
    Dog(int a, std::string n, double w);

    bool operator==(Dog d);
private:
    double weight;

};
Run Code Online (Sandbox Code Playgroud)

我的问题是关于狗的operator==方法,比较2只狗.

动物operator==在下面.

bool Animal::operator==(Animal a) //overriding of operator ==
{
return (age==a.age) && (name==a.name);
}
Run Code Online (Sandbox Code Playgroud)

现在我想用Animal的方法编写Dog的版本.

就像我用Java做的那样:

boolean equals(Dog d){
    return (super.equals(d)) && (this.name==d.name); 
}
Run Code Online (Sandbox Code Playgroud)

我需要的是c ++相当于(super.equals(d)).如果它是一个具有普通名称的方法,那将很容易(Animal :: equals(d)),但我不知道如何为operator ==执行此操作,它具有不同的语法.

c++ inheritance g++

0
推荐指数
1
解决办法
1563
查看次数

标签 统计

c ×1

c++ ×1

g++ ×1

gcc ×1

inheritance ×1

malloc ×1