由买买提看人间百态

topics

全部话题 - 话题: sarray
(共0页)
r****t
发帖数: 10904
1
来自主题: Programming版 - C++ linking 弱问 (one file)
把 error message 也贴一下:
g++ -Wall main.o -o main
main.o: In function `void M::Location::read >(char
const*, SArray::Array&) const':
main.cxx:(.text._ZNK1M8Location4readIN6SArray5ArrayIfLj3EEEEEvPKcRT_[void M:
3u>&) const]+0x1b): undefined reference to `void M::read float, 3u> >(M::Location const&, char const*, SArray::Array&)'
main.o: In function `void M::read_matrix >(char
const*, char const*, SArray::Array
s*i
发帖数: 5025
2
来自主题: DotNet版 - a question about C++.net class library
try this:
//in C#, make a sbyte array, say
//sbyte[] sArray = .....
unsafe
{
fixed(byte *fileName=sArray) className.open(fileName);
}
This should work. Remember to enable 'unsafe blocks" in Visual Studio to
compile correctly.
Working with sbyte is actually not very convinient. If you can recompile your
C++ with "/J" (default char unsigned: Yes), your expected input becomes
"byte*" instead of "sbyte*". This way, you can try this:
//using System.Text
.....
ASCIIEncoding encoding=new ASCIIEncod
K*****n
发帖数: 65
3
来自主题: Programming版 - What is wrong in this array declaration.
change
Shape* sarray[] = {new Circle, new Circle, new Circle};
to
Shape* sarray[] = {new Circle(), new Circle(), new Circle()};
VC++ 6.0 compiles without errors.
i**p
发帖数: 902
4
来自主题: Programming版 - C++ delete[]
delete[] does not work here.
Do I have to delete the 3 objects one by one?
Circle *sarray[] = {new Circle, new Circle, new Circle};
delete[] sarray; // core dump
n**d
发帖数: 9764
5
来自主题: Programming版 - What is wrong in this array declaration.
Shape* sarray[] = {new Circle, new Circle, new Circle};
error C2143: syntax error : missing ';' before '}'
error C2059: syntax error : ';'
The following is the full code.
#include
class Shape {
public:
virtual void draw() = 0;
virtual void erase() = 0;
virtual ~Shape() {}
};
class Circle : public Shape {
public:
Circle() {}
~Circle() { std::cout << "Circle::~Circle\n"; }
void draw() { std::cout << "Circle::draw\n";}
void erase() { std::cout << "Circle::eras
t****t
发帖数: 6806
6
来自主题: Programming版 - C++ linking 弱问 (one file)
除了这个之外,

template
void
read(const Location &location, const char *dataset_name, SArray::
Array & arr) {} // this function is not found
移到
class Location
上面
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
先声明再使用!先声明再使用!先声明再使用!
//重复100遍
r****t
发帖数: 10904
7
来自主题: Programming版 - C++ linking 弱问 (one file)
那我完了,写这 code 的人明显是想利用这个特性,
// this function is not found
template
void read(const Location &location, const char *dataset_name,
SArray::Array & arr) {}
是 intend to be written later 的。我试试在头文件里面先 include 这部分看看。
。。得到下午才能试了。
r****t
发帖数: 10904
8
来自主题: Programming版 - C++ linking 弱问 (one file)
template的声明和定义分开,是不是说像下面这样? linking 好像没出错。我没有用
explicit instantiation 吧? 头文件有点多,include 挺乱,不好保证 reference 到以前有定义。。
namespace SArray {
template class Array;
template
class Array
{
public:
Array() {}
};
}
namespace M {
class Location;
// first arg has to be "const" Location &
template
void read(const Location &, const char * dataset_name, T & matrix);
cl
z***e
发帖数: 5393
9
来自主题: Programming版 - C++ linking 弱问 (one file)
嗯,我觉得也是。
lz 的两个read() function是完全不同的:
template
void read(const Location &, const char * dataset_name, T & matrix);
//这个declare了,但是下面并不是definition. 第三个参数类型都不同。
template
void
read(const Location &location, const char *dataset_name, SArray::
Array & arr) {} // this function is not found
}
然后lz:
Array arr;
M::read_matrix("file", "location", arr);
arr是Array---这个就是你的type,相当于:
void read(const Location &, const char * dataset_name, Array &
mat
(共0页)