[英]C++ string array char questions
為什么當我嘗試編譯此代碼時:
TenStrings::TenStrings()
{
char str1[10] = "String 1";
char str2[10] = "String 2";
char str3[10] = "String 3";
char str4[10] = "String 4";
}
;
我得到錯誤:未使用的變量str1,str2,str 3,str4? 我正在嘗試制作一個適合“字符串1”,“字符串2”等的字符數組
未使用的變量警告只是指出你已經創建了一個變量,但實際上從未對它做過任何有用的事情。
目前,您對str1-4並沒有做任何事情。
只是因為你聲明了這些變量,但從未在你的代碼中使用它們(就我們和編譯器所見)。
我想您想在構造函數中初始化這些變量,以在代碼的其他部分中使用它們。
為了使這項工作,您應該將這些變量聲明為成員。 然后,您可以在沒有“未使用的變量”抱怨的情況下初始化它們。
這是成員變量的示例:
class TenStrings {
private:
char str1[10] = "String 1";
char str2[10] = "String 2";
char str3[10] = "String 3";
char str4[10] = "String 4";
public:
TenStrings();
};
TenStrings::TenStrings()
:str1("String 1"), str2("String 2"), str3("String 3"), str4("String 4"),
{
}
此代碼將您的4個變量聲明為TenStrings類的成員,然后在進入構造函數體之前初始化它們。
編譯器會警告您這些變量未使用,因為您不使用它們。 編譯器擔心您已將代碼保留為半實現 - 您聲明了一堆變量但尚未使用它們。
這是唯一的,如果你已經配置你的編譯器警告視為錯誤的錯誤 。
可能是警告被視為錯誤? 您只需實例化四個字符串,但不對它們執行任何操作。
這是一個警告,而不是錯誤。 只是可以(但不應該)忽略它。
對於您正在處理的賦值,您 不希望聲明名為str1,str2等的變量。您希望TenStrings
類具有單個數據成員 (稱為strings
),這是一個包含十個char指針的數組。 此數組將在構造函數中初始化。
您在這里花費了很多時間在提問,而其中大部分涉及相同的基本材料。 幾乎可以肯定的是,從StackOverflow中休息一下,並利用釋放的時間來研究我剛剛鏈接到的那些教程(或者你可能擁有的任何其他教程)。
編輯 (響應您的評論):這是一個示例。 它不會解決你的作業問題,但它應該給你一些提示。 祝好運。 (順便說一下,我沒有編譯過這個,但我認為它編譯了。)
class SimpleExample {
public:
SimpleExample();
SimpleExample& operator += (const SimpleExample&);
friend ostream& operator cout(ostream&, const SimpleExample&);
private:
int myData[5];
}
SimpleExample::SimpleExample()
{
// Initialize a new SimpleExample instance. (Note that myData[i] is
// the exact same thing as this->myData[i] or (*this).myData[i] . )
for (int i = 0; i < 5; i++) {
myData[i] = i;
}
SimpleExample& operator += (const SimpleExample& that)
{
for (int i = 0; i < 5; i++) {
myData[i] += that.myData[i];
}
return *this;
}
ostream& operator << (ostream& os, const SimpleExample& simp)
{
for (int i = 0; i < 5; i++) {
os << that.myData[i] << " ";
}
return os;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.