Reading .las file into C++
up vote
0
down vote
favorite
I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.
I'm getting several errors:
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|
Code:
#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>
class PointCloud
{
public:
PointCloud(const std::string &path);
private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);
};
#endif //POINTCLOUD_H
#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>
using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}
I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.
Any help would be greatly appreciated.
Thanks
c++ las
|
show 1 more comment
up vote
0
down vote
favorite
I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.
I'm getting several errors:
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|
Code:
#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>
class PointCloud
{
public:
PointCloud(const std::string &path);
private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);
};
#endif //POINTCLOUD_H
#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>
using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}
I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.
Any help would be greatly appreciated.
Thanks
c++ las
You're missing the return type from thePointCloud::read
definition. And you have unmatched braces; I think there is a closing brace (}
) too much at the bottom.
– ravnsgaard
Nov 21 at 22:55
@ravnsgaard, do I still need to specify a return type even though it's void?
– p0ps1c1e
Nov 22 at 2:12
Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared anint
. Your compiler should have more to say about this... What compiler are you using? What version?
– ravnsgaard
Nov 22 at 12:36
I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check
– p0ps1c1e
Nov 22 at 18:15
1
You're not returning anything. So, the return type should bevoid
. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.
– ravnsgaard
Nov 22 at 19:07
|
show 1 more comment
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.
I'm getting several errors:
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|
Code:
#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>
class PointCloud
{
public:
PointCloud(const std::string &path);
private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);
};
#endif //POINTCLOUD_H
#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>
using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}
I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.
Any help would be greatly appreciated.
Thanks
c++ las
I'm fairly new at C++, but I'm trying to read in a .las file. I'm sort of following this youtube video, but I'm still having some issues reading in the file.
I'm getting several errors:
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
candidate is: void PointCloud::read(const string&)|
expected declaration before '}' token|
error: prototype for 'int PointCloud::read(const string&)' does not match any in class 'PointCloud'|
error: candidate is: void PointCloud::read(const string&)|
error: expected declaration before '}' token|
Code:
#ifndef POINTCLOUD_H
#define POINTCLOUD_H
#include <stdint.h>
#include <string>
class PointCloud
{
public:
PointCloud(const std::string &path);
private:
struct Header
{
char magic[4];
uint16_t fileSourceID;
uint16_t globalEncoding;
uint32_t guidData1;
uint16_t guidData2;
uint16_t guidData3;
uint8_t guidData4;
uint8_t versionMaj, versionMin;
char systemIdentifier[32];
char genSoftware[32];
uint16_t creationDay, creationYear;
uint16_t headerSize;
uint32_t pointDataOffset;
uint32_t numVarLenRecords;
char pointDataFormat;
uint16_t pointDataRecordLen;
uint32_t pointRecordNum;
uint32_t pointReturnNum[5];
double scaleX, scaleY, scaleZ;
double offX, offY, offZ;
double maxX, maxY, maxZ;
double minX, minY, minZ;
};
void read(const std::string &path);
};
#endif //POINTCLOUD_H
#include "PointCloud.h"
#include <iostream>
#include <stdexcept>
#include <fstream>>
using namespace std;
PointCloud::read(const string &path)
{
ifstream inf(path, ios::binary);
if(inf.is_open())
{
Header header;
inf.read((char *))&header, sizeof(header));
cout << header.versionMaj << "," << header.versionMin << endl;
}
else
{
cout << "Error: No file found" << endl;
}
}
}
I'm not sure why it is complaining about the prototype I think I have everything right in the header. Also all the variables in the header struct come from this link.
Any help would be greatly appreciated.
Thanks
c++ las
c++ las
edited Nov 22 at 4:00
asked Nov 21 at 22:49
p0ps1c1e
276
276
You're missing the return type from thePointCloud::read
definition. And you have unmatched braces; I think there is a closing brace (}
) too much at the bottom.
– ravnsgaard
Nov 21 at 22:55
@ravnsgaard, do I still need to specify a return type even though it's void?
– p0ps1c1e
Nov 22 at 2:12
Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared anint
. Your compiler should have more to say about this... What compiler are you using? What version?
– ravnsgaard
Nov 22 at 12:36
I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check
– p0ps1c1e
Nov 22 at 18:15
1
You're not returning anything. So, the return type should bevoid
. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.
– ravnsgaard
Nov 22 at 19:07
|
show 1 more comment
You're missing the return type from thePointCloud::read
definition. And you have unmatched braces; I think there is a closing brace (}
) too much at the bottom.
– ravnsgaard
Nov 21 at 22:55
@ravnsgaard, do I still need to specify a return type even though it's void?
– p0ps1c1e
Nov 22 at 2:12
Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared anint
. Your compiler should have more to say about this... What compiler are you using? What version?
– ravnsgaard
Nov 22 at 12:36
I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check
– p0ps1c1e
Nov 22 at 18:15
1
You're not returning anything. So, the return type should bevoid
. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.
– ravnsgaard
Nov 22 at 19:07
You're missing the return type from the
PointCloud::read
definition. And you have unmatched braces; I think there is a closing brace (}
) too much at the bottom.– ravnsgaard
Nov 21 at 22:55
You're missing the return type from the
PointCloud::read
definition. And you have unmatched braces; I think there is a closing brace (}
) too much at the bottom.– ravnsgaard
Nov 21 at 22:55
@ravnsgaard, do I still need to specify a return type even though it's void?
– p0ps1c1e
Nov 22 at 2:12
@ravnsgaard, do I still need to specify a return type even though it's void?
– p0ps1c1e
Nov 22 at 2:12
Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an
int
. Your compiler should have more to say about this... What compiler are you using? What version?– ravnsgaard
Nov 22 at 12:36
Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an
int
. Your compiler should have more to say about this... What compiler are you using? What version?– ravnsgaard
Nov 22 at 12:36
I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check
– p0ps1c1e
Nov 22 at 18:15
I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check
– p0ps1c1e
Nov 22 at 18:15
1
1
You're not returning anything. So, the return type should be
void
. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.– ravnsgaard
Nov 22 at 19:07
You're not returning anything. So, the return type should be
void
. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.– ravnsgaard
Nov 22 at 19:07
|
show 1 more comment
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53421517%2freading-las-file-into-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You're missing the return type from the
PointCloud::read
definition. And you have unmatched braces; I think there is a closing brace (}
) too much at the bottom.– ravnsgaard
Nov 21 at 22:55
@ravnsgaard, do I still need to specify a return type even though it's void?
– p0ps1c1e
Nov 22 at 2:12
Yes, you do. You're running into an ancient rule in the system (inherited from C) that makes anything not explicitly declared an
int
. Your compiler should have more to say about this... What compiler are you using? What version?– ravnsgaard
Nov 22 at 12:36
I'm running GCC im not sure the version as I'm on Windows and its kind of a pain to check
– p0ps1c1e
Nov 22 at 18:15
1
You're not returning anything. So, the return type should be
void
. It already is in your declaration, but there's no return type on your definition. This mismatch is what the compiler's complaining about.– ravnsgaard
Nov 22 at 19:07