這應該是一個字符串類,有很多操作符和函數,包括兩個朋友函數。而這兩者對我造成一些麻煩,因爲編譯器說他們無法訪問私有成員。這裏是我的文件string.h:C++的朋友函數不能訪問私人成員
#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;
很多在這裏irrevelant功能...
friend int operator/ (const Str&, char);
friend std::ostream& operator<< (std::ostream&, const Str&);
};
}
#endif /* STR_H */
這裏是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;
}
此代碼不能編譯,編譯器聲稱Str
成員是私人的。
你會得到什麼錯誤? – 0x499602D2
錯誤:'char * MyStr :: Str :: data'是private | 錯誤:'unsigned int MyStr :: Str :: length'是private | – spinakker
在哪一行發出錯誤?這是兩個功能嗎? – 0x499602D2