小编use*_*091的帖子

"不能引用在不同方法中定义的内部类中的非final变量"问题

我不能在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)

java

8
推荐指数
2
解决办法
1万
查看次数

错误"数组可能没有此类型的元素"

由于这个奇怪的编译错误我编译我的程序的问题...这里是代码的具体部分:

 // 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)

c++ arrays

4
推荐指数
1
解决办法
8559
查看次数

没有运算符"<<"匹配这些操作数

求助我解决这个奇怪的编译错误.我正在重新定义运算符<< 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++ redefinition

1
推荐指数
1
解决办法
467
查看次数

在C++中重新定义operator <<

我知道这个问题可能是愚蠢的,但我是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)

这样做的正确方法是什么?

c++ operator-overloading redefine

0
推荐指数
1
解决办法
6297
查看次数