gpt4 book ai didi

c++ - 预期的 id 表达式 - 使用 g++ 编译

转载 作者:行者123 更新时间:2023-11-27 23:43:28 26 4
gpt4 key购买 nike

我刚刚在 main.cpp 文件中编写了一个带有 Matrix 对象的程序。一切都很好。

现在我想将对象外包到Matrix.cpp文件和Matrix.h头文件中,但是我遇到了错误。

我收到以下编译器错误:

Matrix.cpp:5:15: error: expected id-expression before '(' token Matrix::Matrix(int n_rows){

矩阵.h:

#ifndef Matrix
#define Matrix
#include "iostream"
#include "string"
#include <sstream>
#include <cstdlib>
using namespace std;

class Matrix{

private:

int n_rows;
int* vect;

public:
Matrix(int);
};

#endif

矩阵.cpp:

#include "Matrix.h"

// Constructor
Matrix::Matrix(int n_rows){ //ERROR
if(n_rows>0){

this->n_rows = n_rows;
this->vect = new int[n_rows];
srand(time(NULL));

for(int i = 0; i< n_rows; i++){
this->vect[i] = rand() % 100;
}
}
}

也许这个问题有一个关键字我不知道jet。如果你能帮助我,我将不胜感激。

新:基于已接受的答案:为什么出现的 Matrix 被空格替换?

最佳答案

#define Matrix 意味着每次出现的“Matrix”都将被预处理器替换为空。

因此,您的编译器会看到这一点

using namespace std;

class {

private:

int n_rows;
int* vect;

public:
(int);
};

::(int n_rows){
if(n_rows>0){

this->n_rows = n_rows;
this->vect = new int[n_rows];
srand(time(NULL));

for(int i = 0; i< n_rows; i++){
this->vect[i] = rand() % 100;
}
}
}

但是报错信息指的是预处理前的代码,让人看不懂。

include 守卫通常都是大写的(一般宏也是如此)。
你也应该这样做。

#ifndef MATRIX_H
#define MATRIX_H

关于c++ - 预期的 id 表达式 - 使用 g++ 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52592845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com