C++;:定义类函数(预期的主表达式和预期的非限定id) 我在大学里是C++新手;因为这门课的进度会很快加快,所以我将实现类函数和头文件等,但我们需要自学

C++;:定义类函数(预期的主表达式和预期的非限定id) 我在大学里是C++新手;因为这门课的进度会很快加快,所以我将实现类函数和头文件等,但我们需要自学,c++,function,class,C++,Function,Class,我得到以下3个错误: MagicSquareAlg2.cpp:145:27: error: expected primary-expression before `.' token diagLength = Diagnostics.userInput(*input, &inputFlag); ^ MagicSquareAlg2.cpp:148:49: error: expected primary-expression before `

我得到以下3个错误:

MagicSquareAlg2.cpp:145:27: error: expected primary-expression before `.' token
   diagLength = Diagnostics.userInput(*input, &inputFlag);
                       ^
MagicSquareAlg2.cpp:148:49: error: expected primary-expression before `.' token
  vector< vector<int> > magicSquare = MagicSquare.matrixBuild(diagLength);
                                             ^
MagicSquareAlg2.cpp:149:13: error: expected unqualified-id before `.' token
  Diagnostics.summary(magicSquare, diagLength);
MagicSquareAlg2.cpp:145:27:错误:在“.”标记之前应该有主表达式
diagLength=Diagnostics.userInput(*input,&inputFlag);
^
MagicSquareAlg2.cpp:148:49:错误:应在“.”标记之前使用主表达式
vectormagicSquare=magicSquare.matrixBuild(diagLength);
^
MagicSquareAlg2.cpp:149:13:错误:在“.”标记之前应为非限定id
诊断摘要(magicSquare,diagLength);
这是我的密码。有没有人能给我一些简单的提示,说明我做错了什么(足够让我不必去引用)?我正在尝试的在线教程没有太大帮助

class Diagnostics {
    public:
        vector< vector<int> > magicSquare;
        string diagLengthPrep;
        bool* inputFlag;
        int diagLength;

        int  userInput(string diagLengthPrep, bool* inputFlag);
        void summary(vector< vector<int> > magicSquare, int diagLength);
};

int Diagnostics::userInput(string diagLengthPrep, bool* inputFlag) {
    //Code
}

void Diagnostics::summary(vector< vector<int> > magicSquare, int diagLength) {
    //Code
}

class MagicSquare {
    public:
        int  diagLength;

        vector< vector<int> > matrixBuild(int diagLength);
};

vector< vector<int> > MagicSquare::matrixBuild(int diagLength) {
    //Code
}

void session(string* input, bool inputFlag) {
    int diagLength;

    while (inputFlag == true) {
        //Code

        diagLength = Diagnostics.userInput(*input, &inputFlag);
    }

    vector< vector<int> > magicSquare = MagicSquare.matrixBuild(diagLength);
    Diagnostics.summary(magicSquare, diagLength);
}

int main() {
    //Code
}
类诊断{
公众:
向量magicSquare;
字符串diagnongthprep;
bool*输入标志;
int诊断长度;
int userInput(字符串diagLengthPrep,bool*inputFlag);
无效摘要(矢量<矢量>magicSquare,int diagLength);
};
int Diagnostics::userInput(字符串diagnongthprep,bool*inputFlag){
//代码
}
无效诊断::摘要(矢量magicSquare,int diagLength){
//代码
}
MagicSquare类{
公众:
int诊断长度;
向量matrixBuild(int-diagnlength);
};
vectorMagicSquare::matrixBuild(int diagLength){
//代码
}
无效会话(字符串*输入,布尔输入标志){
int诊断长度;
while(inputFlag==true){
//代码
diagLength=Diagnostics.userInput(*input,&inputFlag);
}
vectormagicSquare=magicSquare.matrixBuild(diagLength);
诊断摘要(magicSquare,diagLength);
}
int main(){
//代码
}

您试图在没有实例的情况下调用非静态成员函数。要解决此问题,请构造类的实例并对其调用函数:

void session(string* input, bool inputFlag) {
    int diagLength;
    Diagnostics diags; //here
    while (inputFlag == true) {
        //Code

        diagLength = diags.userInput(*input, &inputFlag);
    }

    MagicSquare ms; //here
    vector< vector<int> > magicSquare = ms.matrixBuild(diagLength);
    diags.summary(magicSquare, diagLength);
}
void会话(字符串*输入,bool输入标志){
int诊断长度;
诊断诊断;//此处
while(inputFlag==true){
//代码
diagLength=diags.userInput(*input,&inputFlag);
}
MagicSquare ms;//此处
vectormagicSquare=ms.matrixBuild(diagLength);
诊断摘要(magicSquare,诊断长度);
}
了解类与类实例(对象)之间的区别。