2016-09-06 2 views
-1

Я получаю много ненужных синтаксических ошибок с VS2010, и я понятия не имею, откуда они. Вот некоторые из ошибок, которые получилиНесколько необъяснимых синтаксических ошибок в Visual Studio C++

enter image description here

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

#include "stdafx.h" 
#pragma once 
//#include "TwoToFourTree.h" 


template<class ItemType> 

TwoToFourTree<ItemType>::TwoToFourTree() 
{ 
    rootPtr = new QuadNode<ItemType>(); 
}//Default 

template<class ItemType> 
TwoToFourTree<ItemType>::TwoToFourTree(const ItemType& anItem) 
{ 
    rootPtr = new QuadNode<ItemType>(anItem); 
} // Default with item 

template<class ItemType> 
TwoToFourTree<ItemType>::~TwoToFourTree() 
{ 
} // Destructor(needs removal function to be finished) 

template<class ItemType> 
QuadNode<ItemType>* TwoToFourTree<ItemType>::getRootPtr() 
{ 
    return rootPtr; 
} // Returns root pointer 

линия 8 с изображения начинается с первым объявлением методы (конструктор по умолчанию). Есть ли установка, которая может вызвать всю эту глупость? Я искал везде, и я понятия не имею, как подойти к этому.

+1

Всегда публиковать сообщения об ошибках как текстовые сообщения. Изображения не полезны, как вы видите. –

+1

Если я правильно помню, вы не можете реализовать функции-члены класса шаблонов в отдельном исходном файле. Если вы не включите файл .cpp вместо .h, вы получите массу нерешенных ошибок внешних символов в компоновщике, когда вы попытаетесь их использовать. С этой точки зрения кажется, что первая ошибка исходит из отсутствующей точки с запятой после слова 'template' очень рано в файле. Возможно, вам не хватает точки с запятой в конце объявления класса в файле заголовка. Если это не так, можете ли вы показать нам заголовок? –

+0

'TwoToFourTree ' является ошибкой, потому что 'TwoToFourTree' не определен. Другие ошибки каскадом от этого. –

ответ

0

Указана директива #include для TwoToFourTree.h, которая предположительно является файлом, в котором определяется класс TwoToFourTree. Попробуйте раскомментировать эту строку.

+0

Это то, что я изначально сделал, но это дает мне разные ошибки, которые говорят, что «так называемая функция уже определена» для всех функций класса, потому что в файле .h я включил файл .cpp. – Robert

+0

@Robert: * "потому что в файле .h я включил файл .cpp" * - Это обычно не то, что вы хотите. Заголовки должны предоставлять декларации и единицы компиляции (файлы .cpp) реализации. .cpp-файлы должны включать заголовки, а не наоборот. – IInspectable