我是 StackOverflow 的新手,对 C++ 很陌生。当我尝试在我的程序“ising.cpp”中定义一个函数时,我遇到了问题。那是身体功能,它还不完整,但它的发展与我的错误无关:
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <time.h>
#include <stdlib.h>
#include "libreria.h"
using namespace std;
void MetroHastings (system * old_state,int method) {
system new_state;
new_state = *old_state;
}
int main () {
return 0;
}
我认为它与“liberia.h”内部的类系统构造有关的问题:
#ifndef libreria_h
#define libreria_h
using namespace std;
struct vecI_2d {
int nx;
int ny;
};
struct vecD_2d {
double x;
double y;
};
struct atom {
double spin; // 0,1,-1
};
class system {
double T;
int i,j;
double energy;
double J = 1;
atom ** particles;
public:
system();
system (double T, int ix,int iy);
void number_particle (int n);
void ComputeEnergy();
double ReturnEnergy();
double CloseEnergy(int ix,int iy);
double magnetization();
};
#endif
类主体定义在“liberia.cc”中:
#include "libreria.h"
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <time.h>
#include <stdlib.h>
using namespace std;
system::system(double T, int sx, int sy) {
i=sx;
j=sy;
int r;
particles = new atom *[i];
for (int k=0;k<i;k++) {
particles[k] = new atom[j];
}
for (int kx=0;kx<i;kx++) {
for(int ky=0;ky<j;ky++) {
r = rand()%1;
if (r==1) {
particles[kx][ky].spin = 1;
}
else {
particles[kx][ky].spin = -1;
}
}
}
}
等等...这是我用来编译的命令:
g++ ising.cpp libreria.cc -o ising
我不明白为什么我会收到这个错误。我总是在我的 cpp 文件中定义函数,我不知道为什么编译器会将其误认为是变量声明。先感谢您 :)