Error c2059 синтаксическая ошибка public

I’m getting this error «Error C2059 syntax error: ‘public'» in the first «public» of the HelloWorld.h file when I try to build the project. Looks like it’s expecting something else but I’m a rookie on this. I have also tried using ref instead of __gc as the new syntax rules.

Does anybody have a clue of what can be missing here?

Thanks in advance.

HelloWorld.h

#using <mscorlib.dll>
#using "CSharpHelloWorld.netmodule"

using namespace System;

public __gc class HelloWorldC
{
    public:
        // Provide .NET interop and garbage collecting to the pointer.
        CSharpHelloWorld __gc *t;
        HelloWorldC() {
            t = new CSharpHelloWorld();
            // Assign the reference a new instance of the object
        }

     // This inline function is called from the C++ Code
        void callCSharpHelloWorld() {
            t->displayHelloWorld();
        }
};

asked Feb 26, 2015 at 16:27

Neikon's user avatar

6

  1. use ref class instead of __gc class in line 6
  2. use ^ instead of __gc * in line 10
  3. use gcnew instead of new in line 12 change
  4. Common Language Runtime Support To (/clr) in your project Properties

Hossein's user avatar

Hossein

3,0733 gold badges16 silver badges33 bronze badges

answered Feb 27, 2015 at 6:48

Pedramphhi's user avatar

1

Search code, repositories, users, issues, pull requests…

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

I am writing an algebra tree program. While compiling, I got a lot of errors. I do not know where the errors come from.

Here is my code:

//file: Term.h
#ifndef TERM
#define TERM
#include <sstream>
#include <string>
using namespace std;

class Term {
public:
  Term() {}
  virtual ~Term() {}
  virtual string symbolicEval() = 0;
  virtual double numericalEval(double X) = 0;
};  
 #endif

//file: UnaryOp.h
#ifndef UNARYOP
#define UNARYOP
#include "Term.h";

class UnaryOp: public Term{
protected:
   Term* Child;
public:
   UnaryOp(Term* l){Child = l;};
   virtual ~UnaryOp(){delete Child;};
   virtual string symbolicEval(){};
  virtual double numericalEval(){};

};
#endif UNARYOP

//file:CCos.h
#ifndef COS_H
#define COS_H

 #include "UnaryOp.h"

 class  Cos: public UnaryOp{
  public:
    Cos(Term * l):UnaryOp(l){};
    virtual ~ Cos(){};
    virtual string symbolicEval(){
    ostringstream oss;
    oss << "cos(x)" << endl;
    return oss.str();
  };
    virtual double numericalEval(double X){
    return cos(Child->numericalEval(X));
  }

  }
  #endif COS_H

While compiling, I got the following errors:

1>c:\users\administrator\desktop\algebra\algebra\unaryop.h(3): warning C4067: unexpected tokens following preprocessor directive - expected a newline
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2236: unexpected 'class' 'Cos'. Did you forget a ';'?
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2143: syntax error : missing ';' before ':'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2059: syntax error : ':'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2059: syntax error : 'public'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2143: syntax error : missing ';' before '{'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\administrator\desktop\algebra\algebra\algebra.cpp(29): error C2061: syntax error : identifier 'Cos'

Can someone give me a hint where am I wrong?

Rahul Nikate's user avatar

Rahul Nikate

6,1925 gold badges42 silver badges54 bronze badges

asked Nov 13, 2014 at 5:11

Jessica Jin's user avatar

4

Start with replacing

#include "Term.h";

by

#include "Term.h"

(there may be more things wrong). And actually, the first error message exactly told you that the preprocessor was expecting a newline where you wrote a semicolon, so next time please read the error messages first.

answered Nov 13, 2014 at 5:15

Doc Brown's user avatar

Doc BrownDoc Brown

19.8k7 gold badges52 silver badges88 bronze badges

4

Multiple things.

Why are you providing the definition for methods in header files?

//file:CCos.h
#ifndef COS_H
#define COS_H

 #include "UnaryOp.h"

 class  Cos: public UnaryOp{
  public:
    Cos(Term * l):UnaryOp(l){};
    virtual ~ Cos(){};
    virtual string symbolicEval(){
    ostringstream oss;
    oss << "cos(x)" << endl;
    return oss.str();
  };
    virtual double numericalEval(double X){
    return cos(Child->numericalEval(X));
  }

  }
  #endif COS_H

If you are using the «{}» after a method declaration in a «.H» file, would you please explain what does that mean?
How does a compiler understands it?

When do you use a colon? Is it after a method declaration or after a definition or for bothboth?

Are .h files compiled? why? why not?

If you could answer these, you have your answer. It is more of a homework. Request you to please post only relevant & only those questions, for which you need technical assistance.

answered Nov 13, 2014 at 5:46

kris123456's user avatar

kris123456kris123456

5011 gold badge5 silver badges15 bronze badges

you are missing closing brace of virtual string symbolicEval() function.

answered Nov 13, 2014 at 5:14

Ali Kazmi's user avatar

Ali KazmiAli Kazmi

1,4609 silver badges22 bronze badges

6

Я пишу программу дерева алгебры. Во время компиляции у меня появилось много ошибок. Я не знаю, откуда берутся ошибки.

Вот мой код:

//file: Term.h
#ifndef TERM
#define TERM
#include <sstream>
#include <string>
using namespace std;

class Term {
public:
  Term() {}
  virtual ~Term() {}
  virtual string symbolicEval() = 0;
  virtual double numericalEval(double X) = 0;
};  
 #endif

//file: UnaryOp.h
#ifndef UNARYOP
#define UNARYOP
#include "Term.h";

class UnaryOp: public Term{
protected:
   Term* Child;
public:
   UnaryOp(Term* l){Child = l;};
   virtual ~UnaryOp(){delete Child;};
   virtual string symbolicEval(){};
  virtual double numericalEval(){};

};
#endif UNARYOP

//file:CCos.h
#ifndef COS_H
#define COS_H

 #include "UnaryOp.h"

 class  Cos: public UnaryOp{
  public:
    Cos(Term * l):UnaryOp(l){};
    virtual ~ Cos(){};
    virtual string symbolicEval(){
    ostringstream oss;
    oss << "cos(x)" << endl;
    return oss.str();
  };
    virtual double numericalEval(double X){
    return cos(Child->numericalEval(X));
  }

  }
  #endif COS_H

При компиляции я получил следующие ошибки:

1>c:\users\administrator\desktop\algebra\algebra\unaryop.h(3): warning C4067: unexpected tokens following preprocessor directive - expected a newline
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2236: unexpected 'class' 'Cos'. Did you forget a ';'?
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2143: syntax error : missing ';' before ':'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2059: syntax error : ':'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2059: syntax error : 'public'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2143: syntax error : missing ';' before '{'
1>c:\users\administrator\desktop\algebra\algebra\ccos.h(6): error C2447: '{' : missing function header (old-style formal list?)
1>c:\users\administrator\desktop\algebra\algebra\algebra.cpp(29): error C2061: syntax error : identifier 'Cos'

Может кто-нибудь подскажет мне, где я ошибаюсь?

Поделиться

Источник

3 ответа

Начните с замены

#include "Term.h";

от

#include "Term.h"

(может быть, что-то не так). И в самом деле, первое сообщение об ошибке точно сообщило вам, что препроцессор ожидал новую строку, где вы написали точку с запятой, поэтому в следующий раз сначала прочтите сообщения об ошибках.

Doc Brown

Поделиться

Несколько вещей.

Почему вы предоставляете определение методов в файлах заголовков?

//file:CCos.h
#ifndef COS_H
#define COS_H

 #include "UnaryOp.h"

 class  Cos: public UnaryOp{
  public:
    Cos(Term * l):UnaryOp(l){};
    virtual ~ Cos(){};
    virtual string symbolicEval(){
    ostringstream oss;
    oss << "cos(x)" << endl;
    return oss.str();
  };
    virtual double numericalEval(double X){
    return cos(Child->numericalEval(X));
  }

  }
  #endif COS_H

Если вы используете «{}» после объявления метода в файле «.H», не могли бы вы объяснить, что это значит? Как это понимает компилятор?

Когда вы используете двоеточие? Это после объявления метода или после определения или для обоих?

Скомпилированы ли файлы.h? Зачем? почему нет?

Если бы вы могли ответить на них, у вас есть свой ответ. Это скорее домашнее задание. Попросите вас разместить только релевантные и только те вопросы, для которых вам нужна техническая помощь.

kris123456

Поделиться

вам не хватает замыкающей скобки виртуальной функции symbolicEval().

Ali Kazmi

Поделиться

Ещё вопросы

  • 0IIS дает 500 внутренняя ошибка сервера при обслуживании файла PHP
  • 0Как взять СУММУ всех СЧЕТОВ?
  • 1FusionCharts не рендерится в Google Chrome и Firefox
  • 1Android: эффективно скопируйте zip-файл с тысячами файлов из ресурсов во внутреннее хранилище
  • 1Как я могу сохранить hourOfDay и минуты из timePickerDialog, чтобы сравнить его с какой-то другой переменной?
  • 0Как заставить свиток двигаться вместе с диалогом в расширяющемся элементе
  • 0вставить HTML-разметку в HTML-строку PHP
  • 0Путь к изображению не работает в рамках YII?
  • 0MVC Список моделей в AngularJs
  • 0Gmail SMTP с использованием CodeIgniter
  • 0Как получить значение флажка, который был проверен
  • 1Присоединение к словарю с циклом
  • 0jQuery jeditable Не удается прочитать свойство «плагин» неопределенного при попытке использовать datetimepicker
  • 0Добавить дополнительные btn-group onclick
  • 1Обнаружение рта в Opencv обнаруживает несколько областей в Android
  • 0Ошибка jQuery только в IE8 «Объект не поддерживает это свойство или метод»
  • 1установка Swing JDialog на немодальный
  • 1Как получить только дату или время только в реакции на нативный
  • 1C # Crawler Перемещение однопоточного вызова WebClient в многопоточность
  • 1Утечка памяти при попытке сохранить ссылку на фрагментное представление за пределы onDestoryView ()
  • 0JQuery класс переключения на клик
  • 0Делать фотографии, проверять GPS и другие вещи на Android с помощью приложения HTML 5?
  • 1Xamarin Profiler вылетает приложение с самого начала
  • 0Сравните время Python с форматом времени MySQL
  • 1AndroidAnnotations + Instant App — сгенерированный класс <applicationId> .R не найден
  • 0Оконная директива AngluarJS, показывающая вид?
  • 0угловая директива не будет обновлять двустороннюю привязку с контроллером
  • 1Ошибки Entity Framework Validation неправильно обрабатываются клиентом breeze.sharp
  • 1регулярное выражение, отфильтровывающее ‘N’, за которым следует любая комбинация цифр
  • 1Создать массив объекта, когда сканер читает текстовый файл
  • 1В Splashscreen Activity внутри я реализовал интерфейс. Как отправить данные интерфейса на несколько Activity в Kotlin?
  • 1Загрузка запрещена с помощью X-Frame-Options: websitename / Register не разрешает кадрирование между источниками в MVC5
  • 0Преобразование прототипа в JQuery — застрял с class.create и classname.prototype
  • 0getelementbyClassName в angularjs
  • 0я использую ng-grid, который загружает данные из файла json, я хочу сделать кнопки редактирования и удаления, чтобы редактировать и удалять мои данные, используя угловой js?
  • 0PHP массив считывает последовательность
  • 1Как проверить все флажки в списке флажков при первой загрузке страницы?
  • 0Подсчитать количество промежутков до пролета с определенным идентификатором
  • 0Как конвертировать char в float?
  • 1Как называется этот шаблон? (многоразовый вес)
  • 1Не удалось загрузить ресурс при загрузке изображения
  • 0Динамически добавлять Div в HTML JavaScript
  • 1Поместите карту Java в JSON
  • 0Значение столбца не отображается в сетке ng (ui)
  • 0вектор push_back не работает
  • 1pandas.read_csv () интерпретирует TRUE как логическое значение, мне нужна строка
  • 0Вместо электронной почты идентификатор пользователя идет в базу данных
  • 0Ошибка при вставке записи. Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено
  • 0Выберите Distinct, добавляя кортежи вместе в SQL
  • 1Библиотеки Python отсутствуют в Docker-контейнере после их установки в сборке img

Сообщество Overcoder

Несколько вещей.

Почему вы предоставляете определение методов в заголовочных файлах?

//file:CCos.h
#ifndef COS_H
#define COS_H

 #include "UnaryOp.h"

 class  Cos: public UnaryOp{
  public:
    Cos(Term * l):UnaryOp(l){};
    virtual ~ Cos(){};
    virtual string symbolicEval(){
    ostringstream oss;
    oss << "cos(x)" << endl;
    return oss.str();
  };
    virtual double numericalEval(double X){
    return cos(Child->numericalEval(X));
  }

  }
  #endif COS_H

Если вы используете «{}» после объявления метода в файле «.H», не могли бы вы объяснить, что это значит? Как это понимает компилятор?

Когда вы используете двоеточие? Это после объявления метода или после определения или для обоих?

.H файлы скомпилированы? Зачем? почему бы и нет?

Если бы вы могли ответить на них, у вас есть свой ответ. Это больше домашнее задание. Просим вас публиковать только актуальные и только те вопросы, по которым вам нужна техническая помощь.

Понравилась статья? Поделить с друзьями:
  • Err gfx state ошибка игры рдр2
  • Epson ошибка cdr
  • Error c2059 синтаксическая ошибка тип
  • Err rel ошибка karcher
  • Epson ошибка невозможно распознать чернильные картриджи epson