C++ C2011“&引用;:';类别';类型重新定义问题C++;

C++ C2011“&引用;:';类别';类型重新定义问题C++;,c++,visual-c++,C++,Visual C++,我的代码有点小问题。我尝试了20篇文章,但没有一个解决方案奏效。也许这是另一个问题。我不知道。有人能帮我吗?我一个人过不了 rootTe.h #pragma once class Root { public: double a, b, c, x1, x2, x; Root(double, double, double); //inline? void roots(unsigned int); double getX1(); double getX2(); double getX(); }

我的代码有点小问题。我尝试了20篇文章,但没有一个解决方案奏效。也许这是另一个问题。我不知道。有人能帮我吗?我一个人过不了

rootTe.h

#pragma once
class Root { 
public:
double a, b, c, x1, x2, x;

Root(double, double, double); //inline?

void roots(unsigned int);

double getX1();
double getX2();
double getX();
};
rootTe.cpp

#include <iostream>
#include <cmath>
#include "rootException.h" 
#include "rootTest.h"

class Root { 
public:
double a, b, c, x1, x2, x;

Root(double a2, double b2, double c2) {
    a = a2;
    b = b2;
    c = c2;
}

void roots(unsigned int m) {
    ...
}

double getX1() {
    return x1;
}

double getX2() {
    return x2;
}

double getX() {
    return x;
}
};
#包括
#包括
#包括“rootException.h”
#包括“rootTest.h”
类根{
公众:
双a,b,c,x1,x2,x;
根部(双a2、双b2、双c2){
a=a2;
b=b2;
c=c2;
}
空根(无符号整数m){
...
}
双getX1(){
返回x1;
}
双getX2(){
返回x2;
}
双getX(){
返回x;
}
};

您正在定义类
两次

在C++中,使用单独的声明和定义,应该使用以下剪辑:

#include "rootTest.h"

Root::Root(double a2, double b2, double c2) {
    a = a2;
    b = b2;
    c = c2;
}

void Root::roots(unsigned int m) {
    ...
}

等等class
public
这样的词只出现在.h文件中,而不出现在.cpp文件中。相反,你需要像
double Root::getX1()…
这样的文本,你以前是C#或Java程序员吗?当我尝试运行它时,出现了一个错误,就像你在标题中看到的那样。我尝试添加内联,在.h文件中创建Root::Root,从rootTe.cpp根初始化中删除除oot(双a2、双b2、双c2)之外的所有内容,并将初始化添加到Root::Root inside.h中……好吧,我不会撒谎。Java.
s/声明/定义/
。否则它不会是一个重新定义的错误。完成!谢谢@juanIt的作品。你太棒了!我可以用“简单”的方式来做,但现在我想让它看起来,就像它应该看起来一样。谢谢。不客气,记住接受正确的答案,这样stackoverflow可以继续增长:)