Я пишу класс для проекта с помощью Visual Studio, я добавил класс через меню IDE, класс является общедоступным, файл заголовка включен в заголовки проекта, исходные файлы включены в исходные файлы проекта.

Конструктор, деструктор и закрытые члены уже установлены, когда я начал писать первые функции-члены, я получаю эту ошибку: функция-член не может быть объявлена вне своего класса .

Это мой первый тип написания класса в Visual Studio, я знаю, что Code :: Blocks требует некоторого кода связывания, это тот же случай?

в заголовке:

#pragma once
class myclass
{
public:
    myclass( /*parameters*/ );
    void foo ( /*parameters*/ ); //HERE
    ~myclass();
private:
    /* my data members */
};

в исходном файле:

#include "stdafx.h"
#include "myclass.h"

myclass::myclass( /*parameters*/ )
{
    /*constructor code*/
}
void myclass::foo( /*parameters*/ ); //HERE
{
}
myclass::~myclass()
{
    /*destructor code*/
}
0
maja 4 Май 2016 в 13:21

2 ответа

Лучший ответ

Удалите здесь точку с запятой:

void myclass::foo( /*parameters*/ ); //Semicolon HERE
{
}
1
saurabheights 4 Май 2016 в 10:24

У вас не может быть объявления функции-члена вне определения класса. Visual Studio воспринимает это как объявление, потому что вы ставите точку с запятой; в конце сигнатуры функции вашего метода foo удалите ее.

1
Hatted Rooster 4 Май 2016 в 10:24