Share c++ error source type is not polymorphic

ngocthuanlekieu

New member
## C ++ Lỗi: Loại nguồn không đa hình

** Lỗi là gì? **

Lỗi "Loại nguồn không xảy ra đa hình" khi bạn cố gắng sử dụng loại đa hình làm loại nguồn của hàm hoặc lớp mẫu.Lỗi này có thể xảy ra vì một số lý do, nhưng phổ biến nhất là khi bạn cố gắng sử dụng một lớp kế thừa từ một lớp cơ sở không polymor.

** Cách khắc phục lỗi? **

Để khắc phục lỗi này, bạn cần đảm bảo rằng loại nguồn của hàm hoặc lớp mẫu của bạn là đa hình.Điều này có nghĩa là nó phải là một lớp có thể được sử dụng làm lớp cơ sở cho một lớp khác.Bạn có thể làm điều này bằng cách thêm từ khóa `ảo` vào bộ hủy của lớp cơ sở.

**Ví dụ:**

Mã sau đây cho thấy một ví dụ về một lớp kế thừa từ lớp cơ sở không polymor:

`` `C ++
cơ sở lớp {
công cộng:
ảo ~ base () {}
};

lớp học có nguồn gốc: cơ sở công cộng {
công cộng:
// Điều này sẽ gây ra lỗi thời gian biên dịch vì dẫn xuất không phải là đa hình.
Mẫu <Typename T>
void foo (const t & t) {
// ...
}
};
`` `

Để khắc phục lỗi này, chúng ta cần đảm bảo rằng dẫn xuất là đa hình.Chúng ta có thể làm điều này bằng cách thêm từ khóa `` ảo` vào trình phá hủy:

`` `C ++
cơ sở lớp {
công cộng:
ảo ~ base () {}
};

lớp học có nguồn gốc: cơ sở công cộng {
công cộng:
Virtual ~ Derive () {}

Mẫu <Typename T>
void foo (const t & t) {
// ...
}
};
`` `

Bây giờ, mã sẽ biên dịch mà không có bất kỳ lỗi nào.

## hashtags

* #C ++
* #lỗi
* #polymorphism
* #bản mẫu
* #Biên dịch-thời gian-lỗi
=======================================
## C++ Error: Source Type is not polymorphic

**What is the error?**

The error "Source Type is not polymorphic" occurs when you try to use a polymorphic type as the source type of a template function or class. This error can occur for a number of reasons, but the most common is when you try to use a class that inherits from a non-polymorphic base class.

**How to fix the error?**

To fix this error, you need to make sure that the source type of your template function or class is polymorphic. This means that it must be a class that can be used as the base class for another class. You can do this by adding the `virtual` keyword to the base class's destructor.

**Example:**

The following code shows an example of a class that inherits from a non-polymorphic base class:

```c++
class Base {
public:
virtual ~Base() {}
};

class Derived : public Base {
public:
// This will cause a compile-time error because Derived is not polymorphic.
template <typename T>
void foo(const T& t) {
// ...
}
};
```

To fix this error, we need to make sure that Derived is polymorphic. We can do this by adding the `virtual` keyword to the destructor:

```c++
class Base {
public:
virtual ~Base() {}
};

class Derived : public Base {
public:
virtual ~Derived() {}

template <typename T>
void foo(const T& t) {
// ...
}
};
```

Now, the code will compile without any errors.

## Hashtags

* #C++
* #Error
* #polymorphism
* #Template
* #Compile-time-error
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top