C++ 在这种情况下如何修复?语法错误:缺少'';在';*之前&引用;节点";?

C++ 在这种情况下如何修复?语法错误:缺少'';在';*之前&引用;节点";?,c++,syntax,C++,Syntax,我查看了其他类似的问题,似乎找不到相关的原因,这里是我认为相关的代码:(编辑:包括要求的所有代码) main.cpp #include <iostream> #include "Pitri.h" int main() { std::cout << "Hello World!\n"; } dood.cpp #include "dood.h" //#include <stdio.h> //#include <stdlib.h>

我查看了其他类似的问题,似乎找不到相关的原因,这里是我认为相关的代码:(编辑:包括要求的所有代码)

main.cpp

#include <iostream>
#include "Pitri.h"


int main()
{
    std::cout << "Hello World!\n"; 
}
dood.cpp

    #include "dood.h"
//#include <stdio.h>
//#include <stdlib.h>
#include <time.h>

bool dood::init = false;

dood::dood()
{
    if (!init)
    {
        //Set time for random seed
        srand(time(0));
        init = true;
    }

    Primary = rand()%2;
    //Set Blue eyes to always have Blue recessive.
    if (Primary == 0)
        Secondary = rand()%2;
    else
        Secondary = 1;
}

dood::dood(int a, int b)
{
    if (!init)
    {
        //Set time for random seed
        srand(time(0));
        init = true;
    }

    Primary = a;
    Secondary = b;

}


dood::~dood()
{
}

void dood::Mutate()
{


    this->Primary = rand()%2;
    //Set Blue eyes to always have Blue recessive.
    if (Primary == 0)
        Secondary = rand()%2;
    else
        Secondary = 1;
}

dood dood::Reproduce(dood donor)
{
    int dPri = donor.GetPrimary();
    int dSec = donor.GetSecondary();
    int bPri, bSec;

    int punitvalue = rand() % 4 + 1;

    //if at least one dood has Brown/Brown...
    if((Primary == 0 && Secondary == 0) || (dPri == 0 && dSec == 0))
    {
        bPri = 0;
        // if other is Br/Br
        if (Secondary == dSec)
            bSec = 0;
        //if other is Br/Bl
        else if (Primary == dPri)
            bSec = punitvalue % 2;
        //if other is Bl/Bl
        else
            bSec = 1;
    }
    else if ((Primary == 1 && Secondary == 1) || (dPri == 1 && dSec == 1))
    {
        bSec = 1;
        if (dPri == Primary)
            bPri = 1;
        else
            bPri = punitvalue % 2;
    }
    else
    {
        if (punitvalue == 4)
        {
            bPri = 1;
            bSec = 1;
        }
        else
        {
            bPri = 0;
            if (punitvalue % 3 == 0)
                bSec = 0;
            else
                bSec = 1;
        }
    }

    dood baby = new dood(bPri, bSec);

    return baby;
}

void dood::Death()
{

}

void dood::Age()
{
    age = age + 1;
}

int dood::GetPrimary()
{
    return this->Primary;
}

int dood::GetSecondary()
{
    return this->Secondary;
}

int dood::GetAge()
{
    return age;
}
node.cpp

#include "node.h"



node::node()
{
}


node::~node()
{
}
node.h

#pragma once
class node
{
public:
    node();
    ~node();
    node* next;
    dood data;
};

我没有在任何地方使用namespace.std,这是我看到人们提到的最常见的问题,而AFAIK节点在其他地方没有预定义?我能知道一些方向吗?

谢谢你的帮助,完成Pitri课程所需的简单方法包括:

#include "node.h"
#include "dood.h"

在头文件中,而不是在CPP文件中。

类dood{public:}
我删掉了大部分不相关的代码,因为我仍然需要进一步调试问题,这需要首先修复。我只包含dude类中的库include,因为它与node类的定义无关。Pitri.cpp包含dood.h和node.h,这还不够吗,因为任何进一步的内容似乎都是多余的?除非发布的确切代码在我们复制/粘贴/编译它时产生您所描述的确切错误,否则我们除了猜测之外,不可能做任何事情,这不是本网站的目的。帮助我们帮助你。好的,这将需要一秒钟,包括一切,这是远远不够的,我相信有很多新手的错误,我想避免一个完整的批评,只关注这一个错误。(我最初是用名称空间std进行操作的,并将其和其他库进行了剪切以解决此问题。我知道这是一个很大的禁忌。但这是大学教授的内容,我必须遵循此过程…)没有人说包括所有内容。包括足够的数据,以便我们可以产生与您相同的问题。如果你的大学教你使用名称空间std发送垃圾邮件
,尤其是在头文件中,至少要知道,在这方面,你比终身教授更清楚,因为这是一种可怕的做法。关于你的问题。我强烈怀疑在遇到Pitri.h中的内容时,
节点
的定义不可用。到目前为止,这肯定是发布代码中的一个问题。这不是唯一一个被破坏的问题。您仍然有隐式的头依赖项,这是一种糟糕的做法。马上回答。
#include "node.h"



node::node()
{
}


node::~node()
{
}
#pragma once
class node
{
public:
    node();
    ~node();
    node* next;
    dood data;
};
#include "node.h"
#include "dood.h"