C++ :: Template Classes And Inline Methods
Aug 17, 2012
I have a template class which defines a few heavy methods. For now, they are defined in the same .h file as the class definition, but i`d like to have them in a separate .cpp file.
A situation i find you describe in the FAQs arises: [URL] ....
Problem: the export keyword has been deprecated in c++0x, if i recall correctly, and has never been implemented in any of the compilers i am using (msvc, gcc).
#Including the the .cpp file after the class definition (as described in the second post of the FAQ) works.
another question: i have methods that dont use any template code. Can i somehow declare them as such? (more of an esthecial question, which would make it easier to distinguish between template and non.template code).
View 6 Replies
ADVERTISEMENT
Mar 8, 2014
I have this:
string input;
unsigned short choice;
...
istringstream valid(input);
...
if(!(valid >> choice))
{
//some error
}
Ok. My code is almost 1000 lines, and I have splited some functions in headers. But the same function doesn't work:
template <typename T> bool valid_input(const string& input, T var)
{
istringstream valid(input);
return (valid >> var);
}
You can check it here: [URL] The output is correct, but in my machine with C++11, MinGW 4.8 (64 bit in a 64bit-Windows8), the output is incorrect. Why?
If you want more specific info, the problem is that I use input, I think. I use std::getline(std::cin, some_string).
View 4 Replies
View Related
Jan 24, 2012
I'm trying to make a template class which holds a template list I made. The list consists of template nodes (another template class I made).
My problem is that in some places (not everywhere) the compiler says that I'm trying to access private members of the node's class.
For example, if I define my node like this:
template<class T>
class CoefNode {
private:
T coef;
[Code]....
View 5 Replies
View Related
Aug 12, 2014
class intClass{};
class stringClass{};
template <typename T>
class Mediator {
// bunch of code
};
I want Mediator<int> to declare intClass friend, Mediator<std::string> to declare stringClass friend etc..., without having to redefine the entire specialization
template<>
Mediator<int>::friend intClass;
View 5 Replies
View Related
Sep 13, 2013
Let say i have a following scenario:
a function like this.
Code:
template <typename T1>
print (T1 x){
cout << x << "
";
}
How do I prevent user passing a class or a structure or aanoter function to my function print. I mean i know if a wrong thing is passed that i'll get an error eventually but is there a way to explicitly check what has been passed. How is this done usually ?
View 6 Replies
View Related
Nov 16, 2014
I was creating a template and I realized that certain data-types/structs/classes would not be applicable to my template.This would cause bugs and errors if used incorrectly. Is there a way to restrict a template-capture to certain types/classes?
View 2 Replies
View Related
Mar 11, 2013
class A {
// is abstract
};
class B : public A {
// ...
};
[Code] ....
[Code] ....
main3.cpp: In member function ‘FooB& FooB::operator=(const FooC&)’:
main3.cpp:46:44: error: expected ‘(’ before ‘other’
main3.cpp:46:49: error: no matching function for call to ‘Foo<C>::Foo(const FooC&)’
main3.cpp:46:49: note: candidates are:
main3.cpp:19:2: note: Foo<T>::Foo() [with T = C]
main3.cpp:19:2: note: candidate expects 0 arguments, 1 provided
main3.cpp:16:25: note: Foo<C>::Foo(const Foo<C>&)
main3.cpp:16:25: note: no known conversion for argument 1 from ‘const FooC’ to ‘const Foo<C>&’
Is there any way to make it work?
View 1 Replies
View Related
Jun 14, 2012
I want to create template of of Array in order to have possibility use this template for classes Line and Point.
Code:
// Array.h
// Templated Array class containging Ts
#ifndef Array_H
#define Array_H
template <class T=double> class Array {
[Code] .....
View 10 Replies
View Related
Dec 11, 2013
I have observed that inline functions can not be prototyped. example:
.cpp file:
inline void whatever() {
cout<< "this is inline"<< endl;
}
.h file, prototype
inline void whatever(); //would ask for a definition
Because of this, I have have just made functions that are used in only 1 .cpp file (ever) inlined, to make it more efficient (and it has demonstrated that it is more efficient). It's worked out fine so far, but what about the scope of the definition??
Since an inline function is like a templated function, in that it can't be prototyped, how are name conflicts resolved, and what is the best practice for writing inline functions??
Example of a conflict:
//in some arbitrary header...
void do_somthing();
//in .cpp file that inlcudes the header...
inline void do_somthing() {
cout<< "I'm doing somthing!!"<< endl;
} int main() {
do_somthing(); //which one?? it compiles fine though!!
return 0;
}
View 2 Replies
View Related
Apr 14, 2013
This: "The compiler may not always be able to insert the code for a function inline (such as with recursive functions or functions for which you have obtained an address), but generally, it will work."
For a function inline why wont it work for a recursive function or a function for which you have obtained an address?
Why cant the compiler still insert the inline?
View 4 Replies
View Related
Jan 17, 2014
I have some functions inlined using the inline function prefix. If the function is called from outside the file (so a seperate psp-gcc -O3 ... filename.c filename.o compile command, when only the function is changed), will the other files be updated too? (I'm using the pspsdk toolchain).
Example:
max.c
inline byte max(byte a, byte b) {
return a>b?a:b;
} use1.c
void use1() {
if (max(1,2)==0)
[Code] ....
If I compile this, next change the max function and recompile using make (the compiler only takes the changed max.c->max.o file, next links them together) will use1.c&use2.c be updated with the new max.c function?
View 6 Replies
View Related
Oct 5, 2013
I have an array of (Student)classes created in Manager.h, which contains a new instance of class Name (name),(in Student.h)How would I go about accessing the SetFirstName method in Name.cpp if I was in a class Manager.cpp? I have tried using Students[i].name.SetFirstName("name");
// In Manager.h
#include"Student.h"
class Manager
{
[Code]....
View 2 Replies
View Related
Dec 5, 2013
I'm trying to implement a simple template array class, but when i came into the operator< i actually have to use a template :
my code is something like :
template<typename _Type, std::size_t _Size>
class array {
public :
[Code] ......
but i am having an error of shadows template param 'class _Type' is it w/ the name conflict between the array template parameter and the function template parameter ?
View 6 Replies
View Related
Nov 6, 2013
Error1error C2955: 'DoubleLinkedListInterface' : use of class template requires template argument listdoublelinkedlist.h10
Error2error C2244: 'DoubleLinkedList<T>::DoubleLinkedList' : unable to match function definition to an existing declaration doublelinkedlist.cpp7
Error3 .cpperror C2244: 'DoubleLinkedList<T>::~DoubleLinkedList' : unable to match function definition to an existing declaration 12
.h
#pragma once
#include "DoubleLinkedListInterface.h"
#include "Node.h"
#include <iostream>
[Code]....
View 4 Replies
View Related
Jan 6, 2014
I have questions about multiple inheritance and virtual methods. I have a class called solid. All objects of this class have hitboxes and can collide with others. I have the following methods:
void testCollision(something begin, something end);
/* This method takes a container's begin and end iterators to test if the object collides with any other object of the list of all the solids currently in the game area. Each time there is a collision, it calls collide(other) and other.collide(*this) */
virtual bool collide(solid& other);
/* This method always returns false and does nothing */
This class will be inherited by another class which will have overloads for a few specific collisions. For example:
class player : public solid{
public:
bool collide(projectile& other);
bool collide(enemy& other);
bool collide(wall& other);
};
My question is quite simple actually. If I have a loop which calls testCollision() with all elements in the list of all solids (a list of pointers to solids to be exact) and there is a collision between the player and a projectile, will testCollision call player::colide(projectile& other) or will it call solid::collide(solid& other). And in any case, did I understand how to use the virtual keyword? If I'm right, it should call the player::colide method if it's there for the specific type, else it will call the solid::colide which only returns 0, ignoring collision.
View 4 Replies
View Related
Feb 15, 2012
I have h-file with definition of 3 classes. And cpp-file with realization methods of this classes. And when I compile the project errors - LNK2019 is apperead... How make that methods become visible?
View 1 Replies
View Related
May 27, 2013
I have a generic template class with another template in one of its types. Now I want to specialize one of its methods for a particular (template) class, which leads to a compile error, however.
Here is the example:
#include <stdio.h>
template<typename Type>
class Obj1 {
public:
void ID() { printf("Object 1, size = %zu
[Code] .....
GCC ends with:
:35:27: error: type/value mismatch at argument 2 in template parameter list for ‘template<class Type, template<class> class O> class Foo’
:35:27: error: expected a class template, got ‘Obj2<Type>’
What is wrong with the specialization? Can it even be achieved and how (if so)?
View 1 Replies
View Related
Nov 2, 2014
how I want the code to look. Only problem is it doesn't work (Line 11). I have some experience with templates but I'm not a pro.
Basically I want the "Channels<3>" to be a type that I can use to specify a Cable with similar to vector<float/int> it would be Cable<Channels<2 or 3>>.
What have I messed up with the syntax?
#include <iostream>
#include <vector>
using namespace std;
[Code].....
View 4 Replies
View Related
Mar 14, 2014
I have a function:
template<class Iterator, class T>
void a(Iterator, Iterator, const T&);
and I want to be able to simplify calls to 'a' with calls like
a(someIteratableContainer);
instead of having to call:
a(someIteratableContainer.begin(), someIteratableContainer.end(), valueOfTheContainersElementType);
I also want to be able to generalize the function to handle any of the standard iteratable contains: array, vector, deque, whatever.
I was under the impression I could write:
template<template<class T> class U> a(U<T>& container) {
a(container.begin(), container.end(), g(T()));
}
where 'g()' returns an object of the element type. However, the compiler is claiming, no matter how I write a call to the overload, the original template is selected and/or the overload is invalid, depending on the various ways I attempt to write said overload.
View 7 Replies
View Related
May 7, 2013
I'm writing a sorted vector implementation and trying to do it as simply as possible.
Right now, I'm declaring the sorted vector with a protected subclass of vector, then using the "using" keyword to explicitly inherit all methods that aren't related to adding new elements to the vector (so I can control the order).
Eg:
Code: template<typename T, class Cmp = std::less<T>>
class sorted_vector : protected std::vector<T>{
public:
typedef typename std::vector<T>::iterator;
using std::vector<T>::operator=;
using std::vector<T>::assign;
using std::vector<T>::get_allocator;
using std::vector<T>::at;
using std::vector<T>::operator[];
//...
};
Obviously, this is annoyingly redundant. So what I'd like to do is something using the new "delete" keyword from C++11. Is there any quick, expressive way of deleting specific methods?
Also, it's pretty annoying to have to typedef base_class::type type to inherit a type from a base class. Is there a shorter way to do that?
View 14 Replies
View Related
Nov 21, 2013
How to i access setter from within a setter?
I know that getter methods can be access like
Code: getAccounts().getAccountNumber();
// for example but for setters how do i do it? this doesnt seem to work though
Code: setAccounts().setAccountNumber(accountNumber);
View 7 Replies
View Related
Oct 20, 2012
Is it common practice to package methods with other elements(string-s, int-s, float-s, array-s...) of struct?
Than struct acts as a class or is acting similar to class and that have no sense to me? I am new to OOP .
View 4 Replies
View Related
Feb 27, 2014
how to call the methods of the class.I have an object call v which is an array and I don't how to call the methods of the class. The error is here:
v.readDates(v[a]);
#include "Date.h"
#include <iostream>
using namespace std;
int main(){
int a;
cout << " HOW MANY DATES DO YOU HAVE? " << endl;
[code]....
View 3 Replies
View Related
Oct 9, 2013
I'm using lua 5.2.2 with luabind 0.9.
I'd like to be able to add additional class-methods through lua for any classes that I've bound in c++, but I'm unsure how to do it.
The problem is that luabind uses a function as the __index-metamethod for any bound classes instead of a table, so I don't see a way to access the class-methods at all.
e.g., I'm binding my classes like this:
luabind::module(lua) [
luabind::class_<testClass>("TestClass")
.def(luabind::constructor<>())
.def("TestFunc",&TestFunc)
];
What I essentially want to do is to add a lua-function to the list of methods for this class, and be able to overwrite existing ones:
local t = tableOfClassMethods
local r = t.TestFunc -- Reference to the c++-function we've bound
t.SomeFunction = function(o) end -- New function for all objects of this class
t.TestFunc = function(o) end -- Should overwrite the c++-function of the same name
View 2 Replies
View Related
May 8, 2013
i have been trying to call out the tea algorithm from wikipedia. However i keep getting a segmentation fault. Am i calling it out the wrong way? Below are the snippets
methods taken from wikipedia
void encrypt (uint32_t* v, uint32_t* k) {
uint32_t v0=v[0], v1=v[1], sum=0, i; /* set up */
uint32_t delta=0x9e3779b9; /* a key schedule constant */
uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */
for (i=0; i < 32; i++) { /* basic cycle start */
sum += delta;
[code]....
i tried to encrypt a test text and casting it to the uinstd32_t type. However it always gives me a segmentation fault.
View 2 Replies
View Related
Feb 2, 2014
What is a method and what is an object?
View 8 Replies
View Related