簡體   English   中英

“此聲明在C ++中沒有存儲類或類型說明符”

[英]“This declaration has no storage class or type specifier in C++”

我自己的班級和運算子=有問題。 當我嘗試將某個類的一個對象的屬性賦給Cow某個功能之外的同一類的另一個對象時,我得到一條信息“此聲明在C ++中沒有存儲類或類型說明符”。 有什么問題? 對不起我的英語。

    #include "Header.h"

Cow cow5;
Cow cow6;
cow5 = cow6;

int main()
{

    Cow cow1;
    Cow cow2("cowa22", "hobby", 8);
    Cow cow3 = cow2;
    Cow cow4;
    cow2.operator=(cow3);
}

#include "Header.h"
#include <string>
#include <iostream>

Cow::Cow()
{
    strcpy_s(name, sizeof(char)*20, "unnamed");
    hobby = nullptr;
    weight = 0;
}

Cow::Cow(const char * nm, const char * ho, double wt)
{
    strcpy_s(name, sizeof(char) * 20, nm);
    hobby = new char[strlen(ho) + 1];
    strcpy_s(hobby, sizeof(char)*(strlen(ho)+1), ho);
    weight = wt;
}

Cow::Cow(const Cow & c)
{
    strcpy_s(name, sizeof(char) * 20, c.name);
    hobby = new char[strlen(c.hobby) + 1];
    strcpy_s(hobby, sizeof(char)*(strlen(c.hobby) + 1), c.hobby);
    weight = c.weight;
}

Cow::~Cow()
{
    delete[] hobby;
}

Cow & Cow::operator=(const Cow & c)
{
    if (&c == this)
        return *this;
    delete[] hobby;
    strcpy_s(name, sizeof(char) * 20, c.name);
    hobby = new char[strlen(c.hobby) + 1];
    strcpy_s(hobby, sizeof(char)*(strlen(c.hobby) + 1), c.hobby);
    weight = c.weight;

    return *this;
}

void Cow::ShowCow() const
{
    std::cout << "Name: " << name << std::endl
        << "Hobby: " << hobby << std::endl 
        << "Weight: " << weight << std::endl;

}

在C ++中,代碼只能出現在函數體內或變量初始化器中。 這個:

cow5 = cow6;

都在里面,所以這是一個錯誤。 您不能在函數外部使用“浮動”代碼。 把它放在main里面。

您不能在main()之外運行代碼
您只能定義變量,因此:

Cow cow4

作品

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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