我有一個小問題,此代碼:鑄造用C'tor不起作用
#include <iostream>
using namespace std;
class Array
{
public:
int* Arr;
int size;
Array();
Array(const Array& A)
{
size = A.size;
Arr = new int[size];
for (int i=0; i < size; i++)
{
Arr[i] = A.Arr[i];
}
}
Array(int size) { Arr = new int[size]; }
Array(int* A): size(5) // takes only 5 arguments from A
{
Arr = new int[size];
for (int i=0; i < size; i++)
{
Arr[i] = A[i];
}
}
};
Array& operator+ (const Array& A , int* B)
{
Array *Res = new Array(A);
Res->size = A.size*2;
for (int i=A.size; i < Res->size; i++)
{
Res->Arr[i] = B[i - A.size ];
}
return *Res;
}
void main()
{
int A[] = {0,1,2,3,4} , *B;
B = new int[5];
for(int i=0; i<5; i++)
{
B[i] = i+5;
}
Array Res = Array(A) + B; // Using temporary object works
Array Res = ((Array)A) + B; // Forced cast also works good
Array Res1 = A + B; // Automatic casting won't work, why?
}
最後一行不起作用,即使我實現了Array(int* A)
鑄造C'tor
它說:
error C2110: '+' : cannot add two pointers
可能是什麼問題?
編譯器不知道在處理int []和int *'時應該使用Array類。 –
不要使用'void main',總是使用'int main' – Ajay