이것은 두 개의 friend 함수를 포함하여 많은 연산자와 함수가있는 문자열 클래스입니다. 컴파일러가 사적인 멤버들에게 접근 할 수 없다고 말했기 때문에이 두가지는 저에게 약간의 문제를 일으 킵니다. 여기 IRREVELANT 기능C++ friend 함수가 전용 멤버에 액세스 할 수 없습니다.
#include <iostream>
#ifndef STR_H
#define STR_H
namespace MyStr
{
class Str
{
private:
unsigned int length;
char *data;
public:
Str();
Str(const Str&);
Str(const char*);
Str(char c, unsigned int db);
~Str();
char* cStr() const;
unsigned int getLength() const;
많이 ...
여기friend int operator/ (const Str&, char);
friend std::ostream& operator<< (std::ostream&, const Str&);
};
}
#endif /* STR_H */
MAIN.CPP한다 : 여기 내 string.h이
#include <iostream>
#include "Str.h"
using namespace std;
using namespace MyStr;
ostream& operator<< (ostream& out,const Str& str)
{
for (int i=0; i<str.length; i++)
{
out<<str.data[i];
}
out<<endl;
return out;
}
int operator/ (const Str& str, char c)
{
for (int i=0; i<str.length; i++)
{
if(str.data[i]==c) return i;
}
return -1;
}
가이 코드는 컴파일되지 않습니다, 컴파일러는 Str
회원이 비공개임을 주장합니다.
어떤 오류가 발생합니까? – 0x499602D2
오류 : 'char * MyStr :: Str :: data'비공개 | 오류 : '부호없는 int MyStr :: Str :: length'은 (는) 비공개입니다. – spinakker
어떤 라인에서 오류가 발생합니까? 두 가지 기능 모두입니까? – 0x499602D2