これは宿題用の .H ファイルとして与えられており、それに合わせて .C ファイルを作成するように依頼されています。それは本当に単純なものです。小さな何かが欠けていると確信しています。
#ifndef String_H
#define String_H
#include <iostream>
class String
{
public:
// constructor: initializes String with copy of 0-terminated C-string
String(const char *p);
// destructor (when can shared data be released?)
~String();
// copy constructor (how does this change reference counts?)
String(const String &x);
// assignment operator (how does this change reference counts?)
String &operator=(const String &x);
// return number of non-0 characters in string
int size() const;
// return reference count
int ref_count() const;
// returns pointer to character array
const char *cstr() const;
private:
// data containing character strings
// shared by Strings when copying/assigning
struct SharedCString
{
char *data; // 0-terminated char array
int n; // number of non-0 characters in string
int count; // reference count, how many Strings share this object?
};
SharedCString *shared;
};
#endif
コンストラクターで、SharedCString のカウントの値を 1 に設定しようとすると、セグメンテーション エラーが発生します。
私はそれを渡そうとしていました:
shared->count = 1;
なぜこれが機能しないのかわかりません。