我已將此作爲用於作業的.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的count值設置爲1時,出現分段錯誤。
我試圖用它傳遞:
我不知道爲什麼,這是行不通的。
您還沒有提供您爲構造函數編寫的代碼,所以很難說。但是,你有沒有爲'shared'分配內存? –
我認爲它是在String.H中提到的,它是在「SharedCString * shared」構建的,我錯過了什麼? – Classtronaut
是的;該聲明僅僅意味着指針指向*某處*,但不會自動爲其分配任何空間。根據頭文件中的註釋,本練習的重點是讓您瞭解指針的含義以及如何使數據表示更有效。 –