2015-05-20 1 views
0

У меня проблема с моим собственным классом и оператором =. Когда я пытаюсь приписать одному объекту класса 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++, которые указывают использование вами 'strcpy_s', вместо этого используйте' std :: string'. –

ответ

3

Вы не можете запустить код вне main()
Вы можете только определить переменные, поэтому:

Cow cow4 

Работы

9

В C++, код может только появляются внутри тела функций или в переменных инициализаторах. Это:

cow5 = cow6; 

не существует, поэтому это ошибка. Вы не можете иметь код «плавающий» вне функции. Поместите его внутри main.

Смежные вопросы