Re: typedef float float4[4]; std::vector<float4>; does not compile, why?
"Chris M. Thomasson" <no@spam.invalid> wrote in message
news:guuqts$2evh$1@news.ett.com.ua...
"Brian Cole" <coleb2@gmail.com> wrote in message
news:652f9330-ecf8-4b0b-bf5a-9ee62d8845b0@d25g2000prn.googlegroups.com...
The following code will not compile in gcc 4.3.2 on Ubuntu 8.10
#include <vector>
typedef float float4[4];
int main()
{
std::vector<float4> vals;
}
I get the following compilation error:
Try something like this:
_____________________________________________________________________
[...]> std::size_t c1;
std::vector<float4>::iterator i;
for (i = v.begin(), c1 = 0; i != v.end(); ++i, ++c1) {
for (std::size_t c2 = 0; c2 < float4::SIZE; ++c2) {
std::printf("v[%u][%u] == %u\n", c1, c2, v[c1][c2]);
}
}
return 0;
}
_____________________________________________________________________
[...]
Ummm.... I don't know why I did the iteration that way. Perhaps I should
actually use the damn iterator object `i'!!! Here, let me try again:
_____________________________________________________________________
#include <cstdio>
#include <cstddef>
#include <cassert>
#include <vector>
template<typename T, std::size_t T_size>
class array {
T m_buffer[T_size];
public:
enum constant {
SIZE = T_size
};
T& operator [] (std::size_t size) {
assert(size < T_size);
return m_buffer[size];
}
T const& operator [] (std::size_t size) const {
assert(size < T_size);
return m_buffer[size];
}
T* get() {
return m_buffer;
}
T const* get() const {
return m_buffer;
}
};
typedef array<unsigned, 4> float4;
int main() {
std::vector<float4> v;
v.push_back(float4());
v.push_back(float4());
v[0][0] = 1;
v[0][1] = 2;
v[0][2] = 3;
v[0][3] = 4;
v[1][0] = 5;
v[1][1] = 6;
v[1][2] = 7;
v[1][3] = 8;
std::size_t c1;
std::vector<float4>::const_iterator i;
for (i = v.begin(), c1 = 0; i != v.end(); ++i, ++c1) {
for (std::size_t c2 = 0; c2 < float4::SIZE; ++c2) {
std::printf("v[%u][%u] == %u\n", c1, c2, (*i)[c2]);
}
}
return 0;
}
_____________________________________________________________________
There... That's better. I mean, the first posted program works, but its
retarded! Sorry about that.