Đây được coi là một lớp chuỗi với một loạt các toán tử và hàm, bao gồm hai hàm người bạn. Và hai điều đó gây ra một số rắc rối cho tôi, bởi vì trình biên dịch nói rằng họ không thể truy cập vào các thành viên riêng tư. Dưới đây là string.h của tôi:Chức năng bạn bè C++ không thể truy cập các thành viên riêng
#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;
rất nhiều chức năng irrevelant đây ...
friend int operator/ (const Str&, char);
friend std::ostream& operator<< (std::ostream&, const Str&);
};
}
#endif /* STR_H */
đây là main.cpp:
#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;
}
Mã này sẽ không biên dịch, trình biên dịch tuyên bố rằng các thành viên Str
là riêng tư.
Bạn gặp phải lỗi gì? – 0x499602D2
lỗi: 'char * MyStr :: Str :: dữ liệu' là riêng tư | lỗi: 'unsigned int MyStr :: Str :: length' là riêng tư | – spinakker
Dòng nào phát ra lỗi đó? Là nó cho cả hai chức năng? – 0x499602D2