簡體   English   中英

C ++字符串數組char問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM