24.08.2011, 00:20. Просмотров 3218. Ответов 25
Здравствуйте. Такая проблема: Пытаюсь вызвать функция класса Up()
s2 = s1.up(), возвращая указатель на строку (по-умолчанию в s2 пустая строка имеет адрес NULL).
Вот только почему передается не ссылка, а само значение строки, поскольку компилятор пишет: null pointer assignment. Значит ссылка не поменялась, и он, не выделив память, прострочил прямо с нулевого адреса...
И второй вопрос, как можно в данном случае все-таки передать значение (хотя первый вопрос в силе), но так, чтобы выделить точное кол-во памяти под передаваемую строку в s2?
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #include "iostream.h"
#include "CONIO.h"
#include "Ctype.h"
#include "string.h"
using namespace std;
class String
{
private:
char* st;
public:
String(): st(NULL) {}
String(char* str) {int len = strlen(str);
st = new char[len+1]; strcpy(st, str);
}
~String() {delete st;}
void show()const {cout<<endl<<st;}
String up() {int len = strlen(st);
for(int i=0; i<len; i++) st[i] = toupper(st[i]); return st;
}
};
///////////////////
int main()
{
String s1 = "Test yes TEsT";
String s2;
s2 = s1.up();
s2.show();
getch();
return 0;
} |
|
Заранее благодарен!