EDIT: Fixed the error
This is my first time working with templates and am getting nasty syntax errors. I have no idea where the error is since the compiler is telling me I am missing a semi-colon, followed by hundreds of errors. Everything appears fine, however. I am almost certain no semi-colons are missing.
Can anyone help me find this needle in a haystack?? PS The error occurs on the definition of the constructor for the List and says missing ‘;’ before ‘<‘ (i.e. the code below)
template <typename T>
class Node
{
template <typename T>
friend class List<T>;
public:
//Default constructor
Node();
//Copy constructor
Node(const Node<T> & copy);
//Overloaded assignment operator
Node<T> &operator=(const Node<T> & rhs);
//Destructor
~Node();
//Methods
T CreateNode(const T & T);
T &getData();
private:
//Data members
T data;
Node * mNext;
};
asked May 22, 2013 at 3:53
MrPickle5MrPickle5
5224 gold badges9 silver badges31 bronze badges
4
I can’t guarantee it’s the only problem, but this certainly looks suspicious:
T &List<T>::Front() const
T &List<T>::Back() const
void Purge();
At a guess, you intended that to declare three separate functions, in which case it is missing a couple of semicolons, and should look more like this:
T &List<T>::Front() const;
T &List<T>::Back() const;
void Purge();
…or, quite possibly:
T &Front() const;
T &Back() const;
void Purge();
answered May 22, 2013 at 3:57
Jerry CoffinJerry Coffin
477k80 gold badges630 silver badges1112 bronze badges
2
Found the error. It was in my node.h file. The code was
friend class List<T>;
I removed the and it worked.
answered May 22, 2013 at 4:09
MrPickle5MrPickle5
5224 gold badges9 silver badges31 bronze badges
Timon32 0 / 0 / 0 Регистрация: 18.07.2015 Сообщений: 76 |
||||||||
1 |
||||||||
синтаксическая ошибка при определении функции шаблона02.12.2020, 19:10. Показов 2050. Ответов 8 Метки нет (Все метки)
Ошибка в определении Vector<T>::Iterator Vector<T>::Iterator::operator-(size_t i)const Вывод: .h
.inl
0 |
Комп_Оратор) 8916 / 4673 / 626 Регистрация: 04.12.2011 Сообщений: 13,905 Записей в блоге: 16 |
|
02.12.2020, 19:15 |
2 |
Timon32, вы разделили описание шаблона на 2 файла?
0 |
Timon32 0 / 0 / 0 Регистрация: 18.07.2015 Сообщений: 76 |
||||||||||||
02.12.2020, 20:21 [ТС] |
3 |
|||||||||||
Да. На данный момент мне удалось побороть ошибку, но не тем путем которым я хотел. На данный момент код выглядит так: .hpp:
.inl :
main:
0 |
Комп_Оратор) 8916 / 4673 / 626 Регистрация: 04.12.2011 Сообщений: 13,905 Записей в блоге: 16 |
|
02.12.2020, 21:01 |
4 |
но не тем путем которым я хотел. Но тем путём которым и следовало. Шаблон это не чертёж для построения исполнимого кода. Это чертёж для построения исходного кода. Компоновщик не может слинковать код который не сгенерирован. Всё нужно писать в заголовочник в итоге)
0 |
0 / 0 / 0 Регистрация: 18.07.2015 Сообщений: 76 |
|
02.12.2020, 21:57 [ТС] |
5 |
Не один раз видел как выносят реализацию шаблонных функций в отдельный файл(.inl).
0 |
Комп_Оратор) 8916 / 4673 / 626 Регистрация: 04.12.2011 Сообщений: 13,905 Записей в блоге: 16 |
|
02.12.2020, 22:51 |
6 |
Не один раз видел как выносят реализацию шаблонных функций в отдельный файл(.inl). Явные специализации — можно, сам шаблон — нет. Когда-то пытались это сделать (
0 |
0 / 0 / 0 Регистрация: 18.07.2015 Сообщений: 76 |
|
03.12.2020, 00:01 [ТС] |
7 |
0 |
Комп_Оратор) 8916 / 4673 / 626 Регистрация: 04.12.2011 Сообщений: 13,905 Записей в блоге: 16 |
|
03.12.2020, 00:23 |
8 |
Timon32, вы включаете файл в хедер. Я такого не видел и не имел ввиду. Тут скорее всего не идёт речь ни о какой раздельной компиляции. Потому что ваш ini файл не видит хедера и всё что в нём написано не будет распарсено компилятором в отдельной единице трансляции. Если ваш компилятор на стадии препроцессинга сразу сливает всё в один текст, то может оно и будет работать.
0 |
TheCalligrapher Вездепух 11087 / 6054 / 1651 Регистрация: 18.10.2014 Сообщений: 15,183 |
||||||||
03.12.2020, 00:47 |
9 |
|||||||
Сообщение было отмечено Timon32 как решение Решение
warning C4346: Iterator: зависимое имя не является типом Вам же сам компилятор ясно написал, что нужно сделать.
Что это вообще такое?
1 |
Just starting to learn templates in C++ and I have a small piece of code that’s not compiling:
template <class gen_data>
{
gen_data calculate(gen_data a, gen_data b)
{
return a+b;
}
}
int main()
{
int c,d;
cout<<"The sum is: "<<calculate(c,d)<<endl;
return 0;
}
When I compiled it it gave me an error
in function main ‘calculate’ was not declared in that scope
Can anyone help explain where this error comes from?
asked Jan 6, 2014 at 2:42
You have the wrong syntax for declaring a template function. There shouldn’t be braces surrounding the calculate
function. Try rewriting it like this:
template <class gen_data> gen_data calculate(gen_data a, gen_data b)
{
return a+b;
}
Hope this helps!
answered Jan 6, 2014 at 2:45
templatetypedeftemplatetypedef
363k104 gold badges900 silver badges1066 bronze badges
0
You have one pair of braces too many. This worked for me:
#include <iostream>
template <class gen_data>
gen_data calculate(gen_data a, gen_data b) {
return a+b;
}
int main() {
int c = 1, d = 2;
std::cout<<"The sum is: "<<calculate(c,d)<<std::endl;
return 0;
}
answered Jan 6, 2014 at 2:47
Gabriel PerdueGabriel Perdue
1,5532 gold badges15 silver badges23 bronze badges
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
- Pick a username
- Email Address
- Password
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Здравствуйте. Столкнулся с такой проблемой. С утра при выборе товара на сайте выбивает ошибку #0. Включил отладку и вот что оно мне пишет
Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-data/public/shop/themes/incart/product.html" on line 389 "{include file="list-thumbs.html" products=$upselling list_only=true item_wrapper_class="nc-item"}" - Unexpected """, expected one of: "identifier" code 0 ## wa-system/waSystem.class.php(519) #0 index.php(7): waSystem->dispatch() #1 {main} Next SmartyCompilerException with message 'Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-data/public/shop/themes/incart/product.html" on line 389 "{include file="list-thumbs.html" products=$upselling list_only=true item_wrapper_class="nc-item"}" - Unexpected """, expected one of: "identifier"': ## wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(667) #0 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(78, '"') #2 wa-system/vendors/smarty3/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(78, '"') #3 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(206): Smarty_Internal_SmartyTemplateCompiler->doCompile('{strip}/n{$_them...') #4 wa-system/vendors/smarty3/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template)) #5 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(159): Smarty_Internal_Template->compileTemplateSource() #6 wa-system/view/waSmarty3View.class.php(118): Smarty_Internal_TemplateBase->fetch('file:product.ht...', NULL) #7 wa-system/controller/waViewAction.class.php(162): waSmarty3View->fetch('file:product.ht...', NULL) #8 wa-apps/shop/lib/actions/frontend/shopFrontend.action.php(139): waViewAction->display(false) #9 wa-system/controller/waViewController.class.php(86): shopFrontendAction->display() #10 wa-apps/shop/lib/actions/frontend/shopFrontendProduct.controller.php(49): waViewController->executeAction(Object(shopFrontendProductAction)) #11 wa-system/controller/waController.class.php(21): shopFrontendProductController->execute() #12 wa-system/controller/waViewController.class.php(46): waController->run(NULL) #13 wa-system/controller/waFrontController.class.php(254): waViewController->run(NULL) #14 wa-system/controller/waFrontController.class.php(189): waFrontController->runController(Object(shopFrontendProductController), NULL) #15 wa-system/controller/waFrontController.class.php(83): waFrontController->execute(NULL, 'frontend', 'product') #16 wa-system/waSystem.class.php(761): waFrontController->dispatch() #17 wa-system/waSystem.class.php(503): waSystem->dispatchFrontend('product/nasalan...') #18 index.php(7): waSystem->dispatch() #19 {main} GET array() Params array( 'app' => 'shop', 'theme' => 'incart', 'theme_mobile' => 'incart', 'checkout_version' => '1', 'locale' => 'ru_RU', 'title' => 'Велосипеды, купить велосипед в Минске, цены велосипедов в интернет-магазине Клаксон', 'meta_keywords' => '', 'meta_description' => '', 'og_title' => '', 'og_image' => '', 'og_video' => '', 'og_description' => '', 'og_type' => '', 'og_url' => '', 'url_type' => '1', 'type_id' => '0', 'currency' => 'BYR', 'public_stocks' => '0', 'drop_out_of_stock' => '1', 'payment_id' => '0', 'shipping_id' => '0', 'checkout_storefront_id' => '1b3219d8e1c5635918c38b49bc65ec9c', 'product_url' => 'nasaland-k718-275-zelyonyjchyornyj-2018', 'module' => 'frontend', 'action' => 'product', )
Так же при переходе в пункт установленных плагинов бъёт это:
Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-apps/installer/templates/actions/assets/Assets.html" on line 22 "{include file="./Assets.row.html" item=$plugin item_id=$item_id item_type='plugin' inline}" - Unexpected "'plugin'", expected one of: "identifier" code 0 ## wa-system/waSystem.class.php(519) #0 index.php(7): waSystem->dispatch() #1 {main} Next SmartyCompilerException with message 'Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-apps/installer/templates/actions/assets/Assets.html" on line 22 "{include file="./Assets.row.html" item=$plugin item_id=$item_id item_type='plugin' inline}" - Unexpected "'plugin'", expected one of: "identifier"': ## wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(667) #0 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(60, ''plugin'') #2 wa-system/vendors/smarty3/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(60, ''plugin'') #3 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(206): Smarty_Internal_SmartyTemplateCompiler->doCompile('<div class="sha...') #4 wa-system/vendors/smarty3/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template)) #5 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(159): Smarty_Internal_Template->compileTemplateSource() #6 wa-system/view/waSmarty3View.class.php(118): Smarty_Internal_TemplateBase->fetch('templates/actio...', NULL) #7 wa-system/controller/waViewAction.class.php(162): waSmarty3View->fetch('templates/actio...', NULL) #8 wa-system/controller/waViewController.class.php(86): waViewAction->display() #9 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction(Object(installerAssetsAction)) #10 wa-system/controller/waController.class.php(21): waDefaultViewController->execute() #11 wa-system/controller/waViewController.class.php(46): waController->run(NULL) #12 wa-system/controller/waFrontController.class.php(254): waViewController->run(NULL) #13 wa-system/controller/waFrontController.class.php(189): waFrontController->runController(Object(waDefaultViewController), NULL) #14 wa-system/controller/waFrontController.class.php(83): waFrontController->execute(NULL, 'assets', NULL) #15 wa-system/waSystem.class.php(582): waFrontController->dispatch() #16 wa-system/waSystem.class.php(501): waSystem->dispatchBackend('velik/installer...') #17 index.php(7): waSystem->dispatch() #18 {main} GET array( 'module' => 'assets', '_' => '1557298049456', ) Params array()
Подскажите пожалуйста, из-за чего такое и как это можно исправить?