我不能在run()方法中使用变量"i".有什么办法吗?
public class Main {
public static void main(String[] args) {
final int M = 100;
final int N = 4;
final int[] array = new int[M];
for(int b = 0; b < M; b++) array[b] = b;
for( int i = 0; i < N; i++) {
new Thread(new Runnable() {
public void run() {
for(int a = i*(M/N);a < (i+1)*(M/N); a++)
System.out.println("Thread "+i+":"+array[a]);
// i -> cannot refer to a non-final variable inside an inner class defined in …Run Code Online (Sandbox Code Playgroud) 由于这个奇怪的编译错误我编译我的程序的问题...这里是代码的具体部分:
// the error occures at "char _adr[][]" in the constructor parameters
Addresses(string _ime, string _egn, char *_adres, char _adr[][], int adrLen):Person(_ime, _egn, _adres){
addressLength = 0;
for(; addressLength < adrLen; addressLength++) {
if(addressLength >= 5){
break;
}
adr[addressLength] = _adr[addressLength];
}
}
Run Code Online (Sandbox Code Playgroud) 求助我解决这个奇怪的编译错误.我正在重新定义运算符<< for my class Student,但是在"s.name"处出现此错误.变量s.name是一个字符串......
ostream &operator<<(ostream& output, Student &s)
{
output<<"\nIme: "<<s.name<<"\nFakulteten nomer: "<<s.fakn<<"\nSreden uspeh: "<<s.srus<<endl;
return output;
}
Run Code Online (Sandbox Code Playgroud)
这是变量定义:
class Student{
private:
string name;
string fakn;
Date date;
double srus;
Run Code Online (Sandbox Code Playgroud)
重定义函数在我的班级中被定义为朋友:
friend ostream &operator<<(ostream &stream, Student &s);
Run Code Online (Sandbox Code Playgroud) 我知道这个问题可能是愚蠢的,但我是C++的新手,我对操作数的重新定义有很多问题.我想要做的是重新定义操作数<<打印我的类"人"信息,但它似乎编译错误:
class Person {
private:
string name;
unsigned long personId;
string address;
public:
Person(string name2,unsigned long id,string adr) {
name = name2;
personId = id;
address = adr;
}
void operator<<(Person person) {
cout<<"Name: "<<person.name<<" Person ID: "<<person.personId<<" Person address: "<<person.address<<endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Person person("Steven",1212121212,"USA");
cout<<person; //compiling error here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?