C++ :: How To Compare Templated Class With Variadics
Oct 7, 2014
I've this variadic template class implementation:
// Predefine template delegate factory
template < typename R, typename... Args >
class brGenericDelegate ;
// C++11 template alias to announce functor definition
template < typename R, typename... Args >
using brGenericDelegateType = std::function< std::shared_ptr<R>(Args...) > ;
[code]....
This template works fine for me. Now I have to compare, if the functors of the generic templates are equals ore not. Actually I see no way to reach this aim, because I've to cast the brDelegate on each request.
View 4 Replies
ADVERTISEMENT
Oct 23, 2013
I would like to define a templated class while implementing default value on templated arguments. I don't know how to do that with string templated variables.
For exemple:
Code:
template <class T>
class A {
public:
A() { version = ???? }
std::string_base<T> version;
};
I don't want to pass the default value as parameter of the constructor. how I can do this?
View 6 Replies
View Related
Dec 9, 2014
I'm making a minimal spanning tree class that inherits a graph class, both are templated. This is my mstree.h so far:
#ifndef _MSTREE_H_
#define _MSTREE_H_
#include "graph.h"
namespace MSTreeNameSpace
[Code]...
and I keep getting these errors:
mst.h:9:25: error: expected template-name before ‘<’ token
class MST : public Graph<T>
^
mst.h:9:25: error: expected ‘{’ before ‘<’ token
mst.h:9:25: error: expected unqualified-id before ‘<’ token
View 3 Replies
View Related
Feb 3, 2013
I'm trying to template the return type for this function (component), I've looked around for example code but there doesn't seem to be any exactly like what I want.
Entity.hpp
class Entity {
public:
Entity();
unsigned int id = 0;
Component& addComponent(std::string);
[Code] ....
Error : 'ent1.component<HealthComponent>' does not have class type
View 2 Replies
View Related
Apr 19, 2014
I'm trying to make an templated class of List and trying to make a list of Students(another class) which I made. Its not working.
Code seems to work fine for pre-defined data types but it crashes when it comes to students. I also want to run sort function on list of students.
View 1 Replies
View Related
Mar 12, 2012
Can I determine if a templated class has a particular constructor, in my case using a string within function to which T is used?
Code:
template<class T>
void MakeObject(std::vector<T>& dataVector)
{
std::string str "con string,Joe,24";
// catch if T has string constructor
T someObject(str); // T someObject should have constructor from string
dataVector.push_back(someObject);
}
View 1 Replies
View Related
Jan 21, 2013
I want to specialize a particular function for Integer datatype inside a class template. My XX.h will be
namespace ZZ {
template <class T>
class XX {
void doSomething(T x);
};
}
provide me XX.cpp which has template specialization for the function doSomething on Integer datatype.
I tried the following in XX.cpp
#include "XX.h"
using namespace ZZ;
template <class T>
void XX<T>::doSomething(T x) {
[Code] ...
But this code is not working.
View 2 Replies
View Related
May 27, 2013
Running into a snag in my program. I can't seem to figure out how to have an object of a class be able to look at all the other objects of its own class.
Reasoning being, I'm working on a game with multiple ships flying around in the same space. Each ship is a class.
Each ship has an x and a y, and needs to compare the angle and distance of other ships' x and y coordinates to see if they're visible on the same screen.
How to tell an object to look at objects of its own class.
Here's some code:
common.h
#ifndef COMMON_H_INCLUDED
#define COMMON_H_INCLUDED
int dist(int x1, int y1, int x2, int y2);
int get_info(int which);
[Code] ....
Basically, I just don't know how to properly write a function, call, or how to get the info I need, to the Player::get_closest() function so that it can see the other play objects.
View 7 Replies
View Related
Sep 3, 2013
template <typename T> struct avl_tree {
T data;
int balance;
struct avl_tree <T> *Link[2];
static int (*comp)(T, T);
};
In main, I have a function like so:
int compare(int a, int b) {
return ( a - b );
}
Now how do I assign the function pointer in my avl_tree class to the compare function?
I did this:
int (avl_tree<int>::*comp)(int, int) = compare;
But I got the compiler error:
Tree_Test.cc: In function ‘int main()’:
Tree_Test.cc:27:42: error: cannot convert ‘int (*)(int, int)’ to
‘int (avl_tree<int>::*)(int, int)’ in initialization
View 12 Replies
View Related
Apr 20, 2014
I'm trying to generalize the following (working) code:
#include <iostream>
#include <string>
#include <cmath>
int foo (int num) {return num;}
int foo (double num) {return std::round (num);}
int foo (std::string str) {return str.length();}
[code]....
Template argument deduction failed, it says. And using pred_action<T> and pred_action<FIRST> only makes it worse.Do we need to use a visitor pattern or something like that?
View 2 Replies
View Related
Feb 3, 2014
This problem just seems really strange to me because it is simple yet for some reason my class cannot pass into another class. The class PASS_OBJECT has a static array (even with 1 element this doesn't work) and when I try to pass this class (after it is initialized) I seem to lose the data inside the PASS_OBJECT. Not only that but even when I declared the class OBJECT with the type of PASS_OBJECT<int> I seem to lose the integer 99. Here's the code, note that if you comment out line 89, 92 and 93 you will notice that line 90 outputs In main 2: 99 just fine but it doesn't otherwise???
#include <iostream>
const int size = 1;
template <class T>
class PASS_OBJECT;
template <class S>
class OBJECT {
[Code] ....
View 2 Replies
View Related
Nov 5, 2014
To generate output data, I'm printing a bunch of vector contents to files. Because the type of variable can differ between vectors, I wrote a templated printing function to print out whatever the content of the vector is. It looks like this:
template <class T>
void SomeClass::PrintVector(std::vector<T>& Values, std::string& outFile) {
std::ofstream out(outFile, std::ios::app);
[Code] ....
I added the fixed because some larger values were being printed in scientific notation. Everything works well. My test code includes 3 vectors of doubles and 3 vectors of unsigneds. All the unsigneds work well and two of the doubles work well, but the third doubles vector prints nonsense unless I disable the fixed.
The calling code is the exact same. I know the values in the vector are correct, because a) if I comment out the "fixed" flag it works, and b) one of the unsigned vectors is sorted based on the values in that double vector (after it is printed, so the sort cannot corrupt the vector print) and works perfectly.
The "nonsense" looks like chinese/weird characters, if that matters.
View 11 Replies
View Related
Apr 16, 2012
I declared a member method to a class in its header file and implemented it in the cpp file. When I build and run the project in XCode, everything works fine. When I try to do it with a makefile, I get undefined symbols linker errors.
parser.h
Code:
#ifndef ENGINE_SCRIPT_PARSER_H
#define ENGINE_SCRIPT_PARSER_H
#include <string>
#include "variable.h"
namespace ninja_game_engine {
[Code] ....
The exact makefile looks like this:
Code:
test:
g++
Code/Engine/Modules/Timer/timer.cpp
Code/Engine/Modules/list.cpp
[Code] ....
I'm pretty sure that there is a weird namespace gotcha that I'm unaware of that LLVM (default OSX compiler) is compensating for that g++ isn't. Or maybe something weird with the optimization? I want the tests running at that level to make sure everything that is volatile is declared as such.
Rest of the code located here: [URL] ....
View 3 Replies
View Related
Aug 19, 2013
On several occasions in my project, I need to sort elements (indeces) based on their linked values. Those values are stored in an array. This means the comparison looks like this:
bool operator()(int i, int j) { return someArray[i] > someArray[j]; }
Because this form returns often but someArray may differ, I wrapped this in a template class:
template<class T>
struct sorter {
std::vector<T>& data;
sorter(std::vector<T>& __d) : data(__d) {}
bool operator()(int i, int j) const { return data[i] > data[j]; }
};
Now, I want to use this in a different way: I want to select the K indeces with the lowest value from someArray attached to it. My idea was to build a priority_queue, push the first K elements and then compare all the next elements to PQ.top(), as such:
INDEX t(0);
for (; t < someLimit; ++t) {
pq.push(t);
if (pq.size() == K) break;
}
for (; t < someLimit; ++t) {
if (someArray[t] < someArray[pq.top()]) { pq.pop(); pq.push(t); }
}
My problem, however, is the definition / initialization of the priority_queue object. My first idea was simply std::priority_queue<INDEX> pq(sorter<VALUE>(someArray));, but calling any function on pq provides the error "expression must have class type" (?) when hovering over pq.
My second guess, std::priority_queue<INDEX, std::vector<INDEX>, sorter<VALUE>(someArray)> pq;, provides the error 'expected a ')'' when hovering over someArray.
What is the correct way to initialize this data structure?
View 1 Replies
View Related
Jul 15, 2013
I've been studying the heck out of the boost metafunction libraries. I understand a good deal of what things like varadic functions and integral sequence wrappers are, but I am having a hard time putting everything together to get working functions, such as performing arithmetic operations or functions like that of std::vector.
Here is an example of what I'm talking about:
// Sequences
template<typename T... N> struct seq;
template<typename T, T... N> struct seq_c;
// Integral constant wrapper
template<int T> struct int_
[Code] .....
My knowledge of all of this is pretty scattered and I've really been trying hard to put it all together. Is this correct? How can I apply this and use it to do more?
View 5 Replies
View Related
Feb 20, 2013
I need to create a templated doubly linked list, with an iterator class within the list class. This program is to function just like the STL list class but I only need to implement functions that I am using, My trouble is I am kind of clueless on the iterator part and the fact that the list is templated is giving me syntax grief. I have pasted the code I have done so far.
1. On the syntax implementing the list and iterator functions outside of the class
2. I am not sure when to deference the iterator in the functions, but think I have it right so far
3. For the reverse function can I copy the list into a new list in reverse then re add them to the original list overwriting the same values? I have the code I have so far there
4. For the iterator erase function, I am not sure if I am deleting the node correctly.
5. I am not sure if I need template <typename T> above the iterator functions. Does the iterator class need to be a template? Right now it is not.
// Templated doubly linked list class
#include <iostream>
using namespace std;
template <typename T>
class list {
private:
Node *head;
Node *tail;
[Code] ....
View 7 Replies
View Related
Mar 23, 2015
I am working on building a set of templated data structures for my own learning and have run in to an error when instantiating my templated linked list. I receive the following error:
error LNK2019: unresolved external symbol "public: __thiscall LinkedList<int>::~LinkedList<int>(void)" (??1?$LinkedList@H@@QAE@XZ) referenced in function _main
--LinkedList.h--
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
template<class T>
class LinkedList {
[code]....
why I would be receiving this error?
View 1 Replies
View Related
Jun 24, 2014
Apart from compiling i am running a software to test for compliance with standards. I always get the following warnings.Implicit binary conversion from one (type) to (type). The type in general can be unsinged int, long etc. There are several cases in which this happens. Like in an if statements, i made sure that both the types are of the same type by type casting.Is it true that i cannot compare an 8 bit value with 16 bit value? I cannot compare a signed value with an unsigned value?what are the exact rules for this?
In an assignment operator i cannot assign a bigger value to the smaller value. Am i correct?Suppose if i multiply a varaible with constant then the constant should be type casted to the same value as the variable?Also if i am shifting a variable say test1 << 1. Then should 1 also need to be typecasted. How to handle situations if the variable is a complex structure or union? i am very much cofused not able to follow definite rules and mostly trying trial and error and i dont want to do that way.
View 5 Replies
View Related
Jun 13, 2012
In stl map, if I insert two keys, say a and b. It looks like compare operator is called twice. First time a<b is called and second time b<a is called. Why are both a<b and b<a called?
View 6 Replies
View Related
Jan 4, 2014
I am trying to figure out how to go about comparing two strings of numbers. I have two files that both contain numbers 1-50, one file has multiple repeating numbers while the other one just has 1-50.
I want to compare the files and count how many of each number a occurred and make a chart with * next to the number. First I figured I would use the strings like an array and compare them using nested loops. Then I noticed I have single and double digit numbers. The numbers in the files are printed as:
1 44 5 34 4
2 22 7 55 4
...... etc
Compared too:
1
2
3
4
5
......
50
I thought about using string stream and converting the string to int but wouldn't it just be a huge number when set to the int variable? Then I thought about a array initialized with 1-50 and compared to the file but I still have the issue with single and double digit numbers.
My question is how can I just read one number at a time, either double or single digit?
View 11 Replies
View Related
Mar 24, 2014
I want to compare two double values
double x = 3072.00000000;
double y = 3072.0000000;
when checking with if its not working
if(x==y) it not working
View 1 Replies
View Related
Oct 18, 2014
How can I declare a set of strings that i want to be ordered by a boolean function Comp? Like the one you would write in
sort(v.begin(), v.end(), comp);
I tried
set<string, Comp> S;
but it doesn't work
And the same question for priority queues, can you specify the function you want your elements to be sorted by?
View 4 Replies
View Related
Mar 8, 2013
This is possibly more of an algorithm question rather than c++ related.Suppose I have two vectors:
std::vector<double> first = {1.0,2.01,3.05,4.05};
std::vector<double> second = {1,2,3,3,4}; // very similar except no decimals and a second "3"
And now I want an algorithm that will tell me how similar these two vectors are. That is, I want to know how much of first is similar to second.
View 6 Replies
View Related
Jan 11, 2015
Program is about to compare any two numbers input. Then, it will display whether the number is minimum or maximum. Use switch statement.
#include <iostream>
using namespace std;
void main() {
int num1, num2;
cout << "Input 2 integers separated by a space. " << endl;
cin >> num1 >> num2;
[Code] .....
View 4 Replies
View Related
Feb 10, 2015
I have an assignment in my OOP c++ class and I had to create a class called date and one of the member functions is a compare function that compares two dates that are taken in. It is suppose to be something like this:
Date d1(12,25,2003);// Dec 25, 2003
Date d2(5,18,2002);// May 18, 2002
d1.Compare(d2);// returns 1 (since d2 comes first)
d2.Compare(d1);// returns -1 (calling object is d2, comes first)
Then if d1 and d2 are equal then it returns 0.
This is what he gave us to start with the function:
int Date::Compare(const Date& d) {
}
View 11 Replies
View Related
Sep 23, 2013
is it possible to compare value in switch statement? i.e: a > b
View 5 Replies
View Related