2015-05-20 167 views
0

我有我自己的類和operator =的問題。當我試圖將一個類的一個對象歸入類Cow的另一個類之外時,我得到一個信息「這個聲明在C++中沒有存儲類或類型說明符」。有什麼問題?我很抱歉我的英語。「此聲明在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; 

} 
+2

您粘貼.cpp兩次而不是.h和.cpp – Borgleader

+1

只是一個文體評論。不要在C++中使用char數組,它使用'strcpy_s'指示,而是使用'std :: string'。 –

回答

3

您不能運行代碼之外main()
只能定義變量,這就是爲什麼:

Cow cow4 

作品

9

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

cow5 = cow6; 

既不在內部,所以這是一個錯誤。你不能讓代碼在函數之外「浮動」。把它放在main裏面。

相關問題